diff options
| author | 2020-08-11 16:58:31 +0100 | |
|---|---|---|
| committer | 2020-08-19 11:11:03 +0100 | |
| commit | 4292708d0ed6b96d03e2ef781c8ec1ee74dc3eee (patch) | |
| tree | 7c455b2ea3c29ebffb9b1eb36a36704baf1e899d | |
| parent | 501e75e878f91413f828f19a362e68d84ccc7e7e (diff) | |
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
| -rw-r--r-- | api/current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageInstaller.java | 8 | ||||
| -rw-r--r-- | non-updatable-api/current.txt | 2 | ||||
| -rw-r--r-- | 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<android.content.pm.PackageInstaller.SessionInfo> 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<android.content.pm.PackageInstaller.SessionInfo> 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); |