diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-18 18:25:33 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-18 18:25:33 -0400 |
commit | 90d8a6a449dc12fea2b56b557c243e33746d914a (patch) | |
tree | 4984d93853bdfe28c63da7f776be2f255e264101 | |
parent | b18b0956afbe0730ced1c5b95c0071dba447765e (diff) | |
parent | 83861e74c3c89337b0cc43fb38daedfef19e6edf (diff) | |
download | frameworks_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.java | 12 |
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 |