From 4292708d0ed6b96d03e2ef781c8ec1ee74dc3eee Mon Sep 17 00:00:00 2001 From: Mohammad Samiul Islam Date: Tue, 11 Aug 2020 16:58:31 +0100 Subject: Replace redundant error code with a specific one As discussed on b/163039465#comment3, it's not desirable to have two distinct catch-all error bucket, where the difference is very subtle. Opting to use STAGED_SESSION_CONFLICT which is more specific, but not too specific. We can use this error is any scenarios where a staged session interferes with installation of another staged session and we have to fail one of them, e.g a staged session is blocking a rollback or rollback will be causing API downgrade which will break another staged session (b/163734200). Bug: 163039465 Test: atest atest RollbackManagerHostTest#testRollbackFailsBlockingSessions Test: atest StagedInstallTest Change-Id: Ia05350024093cd537e8ced5ea02af5853620d6ef --- api/current.txt | 2 +- core/java/android/content/pm/PackageInstaller.java | 8 ++++---- non-updatable-api/current.txt | 2 +- services/core/java/com/android/server/pm/StagingManager.java | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/api/current.txt b/api/current.txt index 69700f3b0a60..f9f9b78e5ad5 100644 --- a/api/current.txt +++ b/api/current.txt @@ -11901,8 +11901,8 @@ package android.content.pm { field public static final android.os.Parcelable.Creator CREATOR; field public static final int INVALID_ID = -1; // 0xffffffff field public static final int STAGED_SESSION_ACTIVATION_FAILED = 2; // 0x2 + field public static final int STAGED_SESSION_CONFLICT = 4; // 0x4 field public static final int STAGED_SESSION_NO_ERROR = 0; // 0x0 - field public static final int STAGED_SESSION_OTHER_ERROR = 4; // 0x4 field public static final int STAGED_SESSION_UNKNOWN = 3; // 0x3 field public static final int STAGED_SESSION_VERIFICATION_FAILED = 1; // 0x1 } diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index bed7b26034e5..b7c3289b6e66 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -2076,7 +2076,7 @@ public class PackageInstaller { STAGED_SESSION_VERIFICATION_FAILED, STAGED_SESSION_ACTIVATION_FAILED, STAGED_SESSION_UNKNOWN, - STAGED_SESSION_OTHER_ERROR}) + STAGED_SESSION_CONFLICT}) @Retention(RetentionPolicy.SOURCE) public @interface StagedSessionErrorCode{} /** @@ -2103,10 +2103,10 @@ public class PackageInstaller { public static final int STAGED_SESSION_UNKNOWN = 3; /** - * Constant indicating that a known error occurred while processing this staged session, but - * the error could not be matched to other categories. + * Constant indicating that the session was in conflict with another staged session and had + * to be sacrificed for resolution. */ - public static final int STAGED_SESSION_OTHER_ERROR = 4; + public static final int STAGED_SESSION_CONFLICT = 4; /** {@hide} */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) diff --git a/non-updatable-api/current.txt b/non-updatable-api/current.txt index 51e7287bfd72..fa31491c4582 100644 --- a/non-updatable-api/current.txt +++ b/non-updatable-api/current.txt @@ -11901,8 +11901,8 @@ package android.content.pm { field public static final android.os.Parcelable.Creator CREATOR; field public static final int INVALID_ID = -1; // 0xffffffff field public static final int STAGED_SESSION_ACTIVATION_FAILED = 2; // 0x2 + field public static final int STAGED_SESSION_CONFLICT = 4; // 0x4 field public static final int STAGED_SESSION_NO_ERROR = 0; // 0x0 - field public static final int STAGED_SESSION_OTHER_ERROR = 4; // 0x4 field public static final int STAGED_SESSION_UNKNOWN = 3; // 0x3 field public static final int STAGED_SESSION_VERIFICATION_FAILED = 1; // 0x1 } diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index f9bf54a11df0..8def75c3ade2 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -957,7 +957,7 @@ public class StagingManager { // will be deleted. } root.setStagedSessionFailed( - SessionInfo.STAGED_SESSION_OTHER_ERROR, + SessionInfo.STAGED_SESSION_CONFLICT, "Session was blocking rollback session: " + session.sessionId); Slog.i(TAG, "Session " + root.sessionId + " is marked failed due to " + "blocking rollback session: " + session.sessionId); -- cgit v1.2.3-59-g8ed1b