From 8d9ef8300598a7d22a47a52fb5fd56c46dc5b935 Mon Sep 17 00:00:00 2001 From: Harshit Mahajan Date: Wed, 12 Apr 2023 17:13:01 +0000 Subject: [PATCH] Rollback package after reboot has been performed As rollback involves reverting back to an older version, it should be higher user impact than just reboot. Also, since rolling back package anyways require reboot, reboot is redundant step for fixing after rollback. Hence increasing the impact level for rolling back package. Test: atest RollbackPackageHealthObserverTest Bug: b/278707946 Change-Id: I76dac653b4ca3a97be1f9906b27d2f65986326af --- services/core/java/com/android/server/PackageWatchdog.java | 2 ++ .../android/server/rollback/RollbackPackageHealthObserver.java | 2 +- .../server/rollback/RollbackPackageHealthObserverTest.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java index d256aead97e84..f4f5c951faaad 100644 --- a/services/core/java/com/android/server/PackageWatchdog.java +++ b/services/core/java/com/android/server/PackageWatchdog.java @@ -580,6 +580,7 @@ public class PackageWatchdog { PackageHealthObserverImpact.USER_IMPACT_LEVEL_10, PackageHealthObserverImpact.USER_IMPACT_LEVEL_30, PackageHealthObserverImpact.USER_IMPACT_LEVEL_50, + PackageHealthObserverImpact.USER_IMPACT_LEVEL_60, PackageHealthObserverImpact.USER_IMPACT_LEVEL_70, PackageHealthObserverImpact.USER_IMPACT_LEVEL_100}) public @interface PackageHealthObserverImpact { @@ -590,6 +591,7 @@ public class PackageWatchdog { /* Actions having medium user impact, user of a device will likely notice. */ int USER_IMPACT_LEVEL_30 = 30; int USER_IMPACT_LEVEL_50 = 50; + int USER_IMPACT_LEVEL_60 = 60; int USER_IMPACT_LEVEL_70 = 70; /* Action has high user impact, a last resort, user of a device will be very frustrated. */ int USER_IMPACT_LEVEL_100 = 100; diff --git a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java index 2007079ea5ca1..0ca560398657c 100644 --- a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java +++ b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java @@ -121,7 +121,7 @@ final class RollbackPackageHealthObserver implements PackageHealthObserver { impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; } else if (getAvailableRollback(failedPackage) != null) { // Rollback is available, we may get a callback into #execute - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; + impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_60; } else if (anyRollbackAvailable) { // If any rollbacks are available, we will commit them impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_70; diff --git a/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java b/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java index a14073006c318..35d4ffdd94d02 100644 --- a/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/rollback/RollbackPackageHealthObserverTest.java @@ -145,7 +145,7 @@ public class RollbackPackageHealthObserverTest { observer.onHealthCheckFailed(null, PackageWatchdog.FAILURE_REASON_NATIVE_CRASH, 1)); // non-native crash for the package - assertEquals(PackageWatchdog.PackageHealthObserverImpact.USER_IMPACT_LEVEL_30, + assertEquals(PackageWatchdog.PackageHealthObserverImpact.USER_IMPACT_LEVEL_60, observer.onHealthCheckFailed(testFailedPackage, PackageWatchdog.FAILURE_REASON_APP_CRASH, 1)); // non-native crash for a different package