From d0ee1b4042c312c35d5768399b4264e814d382f6 Mon Sep 17 00:00:00 2001 From: Joël Stemmer Date: Fri, 21 Feb 2025 06:49:15 +0000 Subject: Set `mStatus` when we don't have a next package to restore In `dispatchNextRestore` we ask the transport for the next package to restore. If this package is null, we immediately abort the restore. This can happen when the transport encounters some permanent failure and returns null, or when the transport disappears and the `BackupTransportClient` returns null. The problem with the current implementation is that it doesn't set `mStatus` to `TRANSPORT_ERROR`, which means the restore session is reported to have ended successfully. This means we won't attempt to retry the restore. See also ag/26064663. Bug: 397944266 Bug: 381408714 Flag: EXEMPT bugfix Test: manually tested Test: presubmits Change-Id: I40f4406e4180f3224ab3a5d7c32e4c7028d6484e --- .../com/android/server/backup/restore/PerformUnifiedRestoreTask.java | 1 + 1 file changed, 1 insertion(+) (limited to 'services/backup/java') 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 707ae03b3964..166c3ef4b3b4 100644 --- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java +++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java @@ -589,6 +589,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { monitoringExtras); Slog.e(TAG, "Failure getting next package name"); EventLog.writeEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE); + mStatus = BackupTransport.TRANSPORT_ERROR; nextState = UnifiedRestoreState.FINAL; return; } else if (mRestoreDescription == RestoreDescription.NO_MORE_PACKAGES) { -- cgit v1.2.3-59-g8ed1b