summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-09-18 18:25:33 -0400
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-09-18 18:25:33 -0400
commit90d8a6a449dc12fea2b56b557c243e33746d914a (patch)
tree4984d93853bdfe28c63da7f776be2f255e264101
parentb18b0956afbe0730ced1c5b95c0071dba447765e (diff)
parent83861e74c3c89337b0cc43fb38daedfef19e6edf (diff)
downloadframeworks_base-90d8a6a449dc12fea2b56b557c243e33746d914a.zip
frameworks_base-90d8a6a449dc12fea2b56b557c243e33746d914a.tar.gz
frameworks_base-90d8a6a449dc12fea2b56b557c243e33746d914a.tar.bz2
Merge change 25628 into eclair
* changes: Inefficient but correct fix for 2122381: call finishBackup after every performBackup
-rw-r--r--services/java/com/android/server/BackupManagerService.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index c6be61d..4186327 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -1018,7 +1018,15 @@ class BackupManagerService extends IBackupManager.Stub {
backupData = ParcelFileDescriptor.open(backupDataName,
ParcelFileDescriptor.MODE_READ_ONLY);
- if (!transport.performBackup(packInfo, backupData)) throw new Exception();
+ // TODO - We call finishBackup() for each application backed up, because
+ // we need to know now whether it succeeded or failed. Instead, we should
+ // hold off on finishBackup() until the end, which implies holding off on
+ // renaming *all* the output state files (see below) until that happens.
+
+ if (!transport.performBackup(packInfo, backupData) ||
+ !transport.finishBackup()) {
+ throw new Exception("Backup transport failed");
+ }
} else {
if (DEBUG) Log.i(TAG, "no backup data written; not calling transport");
}
@@ -1417,11 +1425,13 @@ class BackupManagerService extends IBackupManager.Stub {
stateFile.delete();
// Tell the transport to remove all the persistent storage for the app
+ // STOPSHIP TODO - need to handle failures
mTransport.clearBackupData(mPackage);
} catch (RemoteException e) {
// can't happen; the transport is local
} finally {
try {
+ // STOPSHIP TODO - need to handle failures
mTransport.finishBackup();
} catch (RemoteException e) {
// can't happen; the transport is local