summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sarp Misoglu <sarpm@google.com> 2025-03-07 12:15:11 +0000
committer Sarp Misoglu <sarpm@google.com> 2025-03-07 12:23:00 +0000
commitc126e4fda1bda784ac0b16e34ef02dc1d66389f1 (patch)
treed531176ecc26565eafde0da695dcb9420ca2cf6c
parent7aec8c1a2889192f517ce4daa97b6d2db0be8ea2 (diff)
Log cancellation reason for full backups to BMM
Currently it's not possible to know from these logs if the backup was cancelled due to timeout or the app crashing or due to backups being explicitly cancelled by an external caller. This CL fixes that issue. Flag: EXEMPT log only update Test: manual // PFTBT is notoriously impossible to write unit tests for. Bug: 399645990 Change-Id: Ia18fdec1d9547130926bf62666ac055e320fb0b6
-rw-r--r--cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java4
-rw-r--r--core/java/android/app/backup/BackupManagerMonitor.java9
-rw-r--r--services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java9
3 files changed, 20 insertions, 2 deletions
diff --git a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
index 696bc82a9ffc..aefa6b53c2f0 100644
--- a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
+++ b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
@@ -1138,6 +1138,10 @@ public class Bmgr {
}
out.append("]");
}
+ if (event.containsKey(BackupManagerMonitor.EXTRA_LOG_CANCELLATION_REASON)) {
+ out.append(" cancellationReason: ");
+ out.append(event.getInt(BackupManagerMonitor.EXTRA_LOG_CANCELLATION_REASON));
+ }
if (mVerbose) {
Set<String> remainingKeys = new ArraySet<>(event.keySet());
remainingKeys.remove(BackupManagerMonitor.EXTRA_LOG_EVENT_ID);
diff --git a/core/java/android/app/backup/BackupManagerMonitor.java b/core/java/android/app/backup/BackupManagerMonitor.java
index e741bc2bf608..578dc6743f91 100644
--- a/core/java/android/app/backup/BackupManagerMonitor.java
+++ b/core/java/android/app/backup/BackupManagerMonitor.java
@@ -164,6 +164,15 @@ public class BackupManagerMonitor {
public static final String EXTRA_LOG_V_TO_U_ALLOWLIST =
"android.app.backup.extra.V_TO_U_ALLOWLIST";
+ /**
+ * An int indicating why a backup was cancelled. One of {@link
+ * com.android.server.backup.BackupRestoreTask.CancellationReason}.
+ *
+ * @hide
+ */
+ public static final String EXTRA_LOG_CANCELLATION_REASON =
+ "android.app.backup.extra.CANCELLATION_REASON";
+
// TODO complete this list with all log messages. And document properly.
public static final int LOG_EVENT_ID_FULL_BACKUP_CANCEL = 4;
public static final int LOG_EVENT_ID_ILLEGAL_KEY = 5;
diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
index f677c9dbf4d0..8715e1dcd78e 100644
--- a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
+++ b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
@@ -973,13 +973,18 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
@Override
public void handleCancel(@CancellationReason int cancellationReason) {
- Slog.w(TAG, "Full backup cancel of " + mTarget.packageName);
+ Slog.w(
+ TAG,
+ "Cancelled backup: " + mTarget.packageName + " reason:" + cancellationReason);
mBackupManagerMonitorEventSender.monitorEvent(
BackupManagerMonitor.LOG_EVENT_ID_FULL_BACKUP_CANCEL,
mTarget,
BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT,
- /* extras= */ null);
+ BackupManagerMonitorEventSender.putMonitoringExtra(
+ /* extras= */ null,
+ BackupManagerMonitor.EXTRA_LOG_CANCELLATION_REASON,
+ cancellationReason));
mIsCancelled = true;
// Cancel tasks spun off by this task.
mUserBackupManagerService.handleCancel(mEphemeralToken, cancellationReason);