summaryrefslogtreecommitdiff
path: root/services/backup/java
diff options
context:
space:
mode:
author Joël Stemmer <jstemmer@google.com> 2024-01-24 11:37:04 +0000
committer Joël Stemmer <jstemmer@google.com> 2024-01-30 15:41:03 +0000
commitaa74ed121ff2ba0535aa32f2c8159526fbc6a4d7 (patch)
treea3e9b94e9856bb6497c273e4699001af71dd5fa8 /services/backup/java
parent8bbff97a70071305df2cb7f7083e2b4c86733b74 (diff)
Set `mStatus` when `dispatchNextRestore` encounters a transport error
`PerformUnifiedRestoreTask` is a state-machine that is responsible for restoring the backups a given set of packages. At every point in this process it's possible for a transport error to occur. This is treated as a fatal error, immediately moving the state machine into the `FINAL` state. The `mStatus` variable is used to indicate the result in the `RestoreObserver.restoreFinished` callback. A non-zero value for `mStatus` indicates something failed during restore. `dispatchNextRestore` is the only place in this state machine where a transport error does not set `mStatus` to `TRANSPORT_ERROR`, even though the state is set to `FINAL`. As a result, the `RestoreObserver` listener is likely to wrongly assume that the restore succeeded in this particular case. Bug: 283932000 Test: atest services/tests/mockingservicestests/src/com/android/server/backup Test: Manual testing with custom build that returns an error in `dispatchNextRestore`. Change-Id: I769e8200ad4ac12b58dbb8c8181b21ff9933453a
Diffstat (limited to 'services/backup/java')
-rw-r--r--services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java1
1 files changed, 1 insertions, 0 deletions
diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
index 055970819e28..d85dd879e21d 100644
--- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
+++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
@@ -732,6 +732,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY,
monitoringExtras);
EventLog.writeEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE);
+ mStatus = BackupTransport.TRANSPORT_ERROR;
nextState = UnifiedRestoreState.FINAL;
} finally {
executeNextState(nextState);