summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mohammad Samiul Islam <samiul@google.com> 2020-08-11 16:58:31 +0100
committer Mohammad Samiul Islam <samiul@google.com> 2020-08-19 11:11:03 +0100
commit4292708d0ed6b96d03e2ef781c8ec1ee74dc3eee (patch)
tree7c455b2ea3c29ebffb9b1eb36a36704baf1e899d
parent501e75e878f91413f828f19a362e68d84ccc7e7e (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.txt2
-rw-r--r--core/java/android/content/pm/PackageInstaller.java8
-rw-r--r--non-updatable-api/current.txt2
-rw-r--r--services/core/java/com/android/server/pm/StagingManager.java2
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);