Loading services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java +18 −14 Original line number Diff line number Diff line Loading @@ -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; } } Loading @@ -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, ""); } Loading Loading @@ -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 = Loading @@ -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<RollbackInfo> recentRollbacks = Loading @@ -274,15 +274,19 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve packageInstaller.getSessionInfo(sessionId); if (sessionInfo.isStagedSessionReady() && markStagedSessionHandled(rollbackId)) { mContext.unregisterReceiver(listener); 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(moduleMetadataPackage, } 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, ""); Loading Loading @@ -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); } } Loading Loading
services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java +18 −14 Original line number Diff line number Diff line Loading @@ -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; } } Loading @@ -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, ""); } Loading Loading @@ -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 = Loading @@ -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<RollbackInfo> recentRollbacks = Loading @@ -274,15 +274,19 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve packageInstaller.getSessionInfo(sessionId); if (sessionInfo.isStagedSessionReady() && markStagedSessionHandled(rollbackId)) { mContext.unregisterReceiver(listener); 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(moduleMetadataPackage, } 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, ""); Loading Loading @@ -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); } } Loading