Skip to content

Commit b765e45

Browse files
Christopher TateAndroid (Google) Code Review
authored andcommitted
Merge "Gracefully handle "needs init" transport errors at finish"
2 parents 882ed37 + e659fb9 commit b765e45

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

services/java/com/android/server/BackupManagerService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1966,6 +1966,9 @@ void finalizeBackup() {
19661966
synchronized (mQueueLock) {
19671967
mBackupRunning = false;
19681968
if (mStatus == BackupConstants.TRANSPORT_NOT_INITIALIZED) {
1969+
// Make sure we back up everything and perform the one-time init
1970+
clearMetadata();
1971+
if (DEBUG) Slog.d(TAG, "Server requires init; rerunning");
19691972
backupNow();
19701973
}
19711974
}
@@ -1975,6 +1978,12 @@ void finalizeBackup() {
19751978
mWakelock.release();
19761979
}
19771980

1981+
// Remove the PM metadata state. This will generate an init on the next pass.
1982+
void clearMetadata() {
1983+
final File pmState = new File(mStateDir, PACKAGE_MANAGER_SENTINEL);
1984+
if (pmState.exists()) pmState.delete();
1985+
}
1986+
19781987
// Invoke an agent's doBackup() and start a timeout message spinning on the main
19791988
// handler in case it doesn't get back to us.
19801989
int invokeAgentForBackup(String packageName, IBackupAgent agent,

0 commit comments

Comments
 (0)