Merge "Abandon other staged sessions when a rollback is staged." into sc-dev
This commit is contained in:
@@ -737,31 +737,31 @@ public class StagingManager {
|
||||
continue;
|
||||
}
|
||||
|
||||
// New session cannot have same package name as one of the active sessions
|
||||
if (stagedSession.sessionContains(s -> s.getPackageName().equals(packageName))) {
|
||||
if (isRollback) {
|
||||
// If the new session is a rollback, then it gets priority. The existing
|
||||
// session is failed to unblock rollback.
|
||||
final StagedSession root = stagedSession;
|
||||
if (!ensureActiveApexSessionIsAborted(root)) {
|
||||
Slog.e(TAG, "Failed to abort apex session " + root.sessionId());
|
||||
// Safe to ignore active apex session abort failure since session
|
||||
// will be marked failed on next step and staging directory for session
|
||||
// will be deleted.
|
||||
}
|
||||
root.setSessionFailed(
|
||||
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());
|
||||
} else {
|
||||
throw new PackageManagerException(
|
||||
SessionInfo.STAGED_SESSION_VERIFICATION_FAILED,
|
||||
"Package: " + session.getPackageName() + " in session: "
|
||||
+ session.sessionId()
|
||||
+ " has been staged already by session: "
|
||||
+ stagedSession.sessionId(), null);
|
||||
if (isRollback && !isRollback(stagedSession)) {
|
||||
// If the new session is a rollback, then it gets priority. The existing
|
||||
// session is failed to reduce risk and avoid an SDK extension dependency
|
||||
// violation.
|
||||
final StagedSession root = stagedSession;
|
||||
if (!ensureActiveApexSessionIsAborted(root)) {
|
||||
Slog.e(TAG, "Failed to abort apex session " + root.sessionId());
|
||||
// Safe to ignore active apex session abort failure since session
|
||||
// will be marked failed on next step and staging directory for session
|
||||
// will be deleted.
|
||||
}
|
||||
root.setSessionFailed(
|
||||
SessionInfo.STAGED_SESSION_CONFLICT,
|
||||
"Session was failed by rollback session: " + session.sessionId());
|
||||
Slog.i(TAG, "Session " + root.sessionId() + " is marked failed due to "
|
||||
+ "rollback session: " + session.sessionId());
|
||||
} else if (stagedSession.sessionContains(
|
||||
s -> s.getPackageName().equals(packageName))) {
|
||||
// New session cannot have same package name as one of the active sessions
|
||||
throw new PackageManagerException(
|
||||
SessionInfo.STAGED_SESSION_VERIFICATION_FAILED,
|
||||
"Package: " + session.getPackageName() + " in session: "
|
||||
+ session.sessionId()
|
||||
+ " has been staged already by session: "
|
||||
+ stagedSession.sessionId(), null);
|
||||
}
|
||||
|
||||
// Staging multiple root sessions is not allowed if device doesn't support
|
||||
|
||||
Reference in New Issue
Block a user