diff options
author | 2025-03-07 12:15:11 +0000 | |
---|---|---|
committer | 2025-03-07 12:23:00 +0000 | |
commit | c126e4fda1bda784ac0b16e34ef02dc1d66389f1 (patch) | |
tree | d531176ecc26565eafde0da695dcb9420ca2cf6c | |
parent | 7aec8c1a2889192f517ce4daa97b6d2db0be8ea2 (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
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); |