Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 218e15ce authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix system server crash when told to init backup transports"

parents e805aa26 66c94726
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -653,7 +653,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter

    // Persistently track the need to do a full init
    private static final String INIT_SENTINEL_FILE_NAME = "_need_init_";
    private ArraySet<String> mPendingInits = new ArraySet<>();  // transport names
    private final ArraySet<String> mPendingInits = new ArraySet<>();  // transport names

    // Round-robin queue for scheduling full backup passes
    private static final int SCHEDULE_FILE_VERSION = 1; // current version of the schedule file
+13 −9
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static com.android.server.backup.RefactoredBackupManagerService.TAG;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.ArraySet;
import android.util.Slog;

import com.android.server.backup.RefactoredBackupManagerService;
@@ -38,20 +39,23 @@ public class RunInitializeReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        if (RUN_INITIALIZE_ACTION.equals(intent.getAction())) {
            synchronized (backupManagerService.getQueueLock()) {
                final ArraySet<String> pendingInits = backupManagerService.getPendingInits();
                if (DEBUG) {
                    Slog.v(TAG, "Running a device init");
                    Slog.v(TAG, "Running a device init; " + pendingInits.size() + " pending");
                }

                String[] pendingInits = (String[]) backupManagerService.getPendingInits().toArray();
                backupManagerService.clearPendingInits();
                if (pendingInits.size() > 0) {
                    final String[] transports = pendingInits.toArray(new String[pendingInits.size()]);
                    PerformInitializeTask initTask = new PerformInitializeTask(backupManagerService,
                        pendingInits, null);
                            transports, null);

                    // Acquire the wakelock and pass it to the init thread.  it will
                    // be released once init concludes.
                    backupManagerService.clearPendingInits();
                    backupManagerService.getWakelock().acquire();
                    backupManagerService.getBackupHandler().post(initTask);
                }
            }
        }
    }
}