diff --git a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java index b9ef7b39c4517..7a8ddd48611e8 100644 --- a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java +++ b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java @@ -179,10 +179,10 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve // Use the version of the metadata package that was installed before // we rolled back for logging purposes. - VersionedPackage oldModuleMetadataPackage = null; + VersionedPackage oldLogPackage = null; for (PackageRollbackInfo packageRollback : rollback.getPackages()) { if (packageRollback.getPackageName().equals(moduleMetadataPackageName)) { - oldModuleMetadataPackage = packageRollback.getVersionRolledBackFrom(); + oldLogPackage = packageRollback.getVersionRolledBackFrom(); break; } } @@ -194,13 +194,13 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve return; } if (sessionInfo.isStagedSessionApplied()) { - logEvent(oldModuleMetadataPackage, + logEvent(oldLogPackage, StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS, WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, ""); } else if (sessionInfo.isStagedSessionReady()) { // TODO: What do for staged session ready but not applied } else { - logEvent(oldModuleMetadataPackage, + logEvent(oldLogPackage, StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE, WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, ""); } @@ -245,12 +245,12 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } private BroadcastReceiver listenForStagedSessionReady(RollbackManager rollbackManager, - int rollbackId, @Nullable VersionedPackage moduleMetadataPackage) { + int rollbackId, @Nullable VersionedPackage logPackage) { BroadcastReceiver sessionUpdatedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { handleStagedSessionChange(rollbackManager, - rollbackId, this /* BroadcastReceiver */, moduleMetadataPackage); + rollbackId, this /* BroadcastReceiver */, logPackage); } }; IntentFilter sessionUpdatedFilter = @@ -260,7 +260,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } private void handleStagedSessionChange(RollbackManager rollbackManager, int rollbackId, - BroadcastReceiver listener, @Nullable VersionedPackage moduleMetadataPackage) { + BroadcastReceiver listener, @Nullable VersionedPackage logPackage) { PackageInstaller packageInstaller = mContext.getPackageManager().getPackageInstaller(); List recentRollbacks = @@ -274,15 +274,19 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve packageInstaller.getSessionInfo(sessionId); if (sessionInfo.isStagedSessionReady() && markStagedSessionHandled(rollbackId)) { mContext.unregisterReceiver(listener); - saveLastStagedRollbackId(rollbackId); - logEvent(moduleMetadataPackage, + if (logPackage != null) { + // We save the rollback id so that after reboot, we can log if rollback was + // successful or not. If logPackage is null, then there is nothing to log. + saveLastStagedRollbackId(rollbackId); + } + logEvent(logPackage, StatsLog .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED, WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, ""); } else if (sessionInfo.isStagedSessionFailed() && markStagedSessionHandled(rollbackId)) { - logEvent(moduleMetadataPackage, + logEvent(logPackage, StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE, WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, ""); @@ -362,12 +366,12 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve } } - private static void logEvent(@Nullable VersionedPackage moduleMetadataPackage, int type, + private static void logEvent(@Nullable VersionedPackage logPackage, int type, int rollbackReason, @NonNull String failingPackageName) { Slog.i(TAG, "Watchdog event occurred of type: " + rollbackTypeToString(type)); - if (moduleMetadataPackage != null) { - StatsLog.logWatchdogRollbackOccurred(type, moduleMetadataPackage.getPackageName(), - moduleMetadataPackage.getVersionCode(), rollbackReason, failingPackageName); + if (logPackage != null) { + StatsLog.logWatchdogRollbackOccurred(type, logPackage.getPackageName(), + logPackage.getVersionCode(), rollbackReason, failingPackageName); } }