OSDN Git Service

Don't forget to clear "backup in progress" state when finishing a pass
authorChristopher Tate <ctate@android.com>
Sun, 27 Sep 2009 22:16:44 +0000 (15:16 -0700)
committerandroid-build SharedAccount <android-build@sekiwake.mtv.corp.google.com>
Mon, 28 Sep 2009 00:40:26 +0000 (17:40 -0700)
If a backup pass had been skipped (either because the transport was unavailable
or -- in a common case! -- because there was simply no work pending when the
periodic backup check fired), we were forgetting to reset the "backup currently
in progress" flag.  Once we'd done that, the device would *NEVER* perform a
backup until it was rebooted, since it would forever think that there was one
currently in operation that must not be interfered with.

Change-Id: I0d6d7375dc6de99b599222a449934e70fe13ebb9

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

index cb917db..15290c1 100644 (file)
@@ -637,6 +637,9 @@ class BackupManagerService extends IBackupManager.Stub {
                 IBackupTransport transport = getTransport(mCurrentTransport);
                 if (transport == null) {
                     Log.v(TAG, "Backup requested but no transport available");
+                    synchronized (mQueueLock) {
+                        mBackupOrRestoreInProgress = false;
+                    }
                     mWakelock.release();
                     break;
                 }
@@ -671,6 +674,9 @@ class BackupManagerService extends IBackupManager.Stub {
                         (new PerformBackupThread(transport, queue, oldJournal)).start();
                     } else {
                         Log.v(TAG, "Backup requested but nothing pending");
+                        synchronized (mQueueLock) {
+                            mBackupOrRestoreInProgress = false;
+                        }
                         mWakelock.release();
                     }
                 }
@@ -1686,6 +1692,9 @@ class BackupManagerService extends IBackupManager.Stub {
                 }
 
                 // Last but not least, release the cpu
+                synchronized (mQueueLock) {
+                    mBackupOrRestoreInProgress = false;
+                }
                 mWakelock.release();
             }
         }