Merge "Store the correct rollback id for logging on boot complete"
This commit is contained in:
committed by
Android (Google) Code Review
commit
b4075aabd0
@@ -179,10 +179,10 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
||||
|
||||
// Use the version of the metadata package that was installed before
|
||||
// we rolled back for logging purposes.
|
||||
VersionedPackage oldModuleMetadataPackage = null;
|
||||
VersionedPackage oldLogPackage = null;
|
||||
for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
|
||||
if (packageRollback.getPackageName().equals(moduleMetadataPackageName)) {
|
||||
oldModuleMetadataPackage = packageRollback.getVersionRolledBackFrom();
|
||||
oldLogPackage = packageRollback.getVersionRolledBackFrom();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -194,13 +194,13 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
||||
return;
|
||||
}
|
||||
if (sessionInfo.isStagedSessionApplied()) {
|
||||
logEvent(oldModuleMetadataPackage,
|
||||
logEvent(oldLogPackage,
|
||||
StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
|
||||
WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
|
||||
} else if (sessionInfo.isStagedSessionReady()) {
|
||||
// TODO: What do for staged session ready but not applied
|
||||
} else {
|
||||
logEvent(oldModuleMetadataPackage,
|
||||
logEvent(oldLogPackage,
|
||||
StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
|
||||
WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
|
||||
}
|
||||
@@ -245,12 +245,12 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
||||
}
|
||||
|
||||
private BroadcastReceiver listenForStagedSessionReady(RollbackManager rollbackManager,
|
||||
int rollbackId, @Nullable VersionedPackage moduleMetadataPackage) {
|
||||
int rollbackId, @Nullable VersionedPackage logPackage) {
|
||||
BroadcastReceiver sessionUpdatedReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
handleStagedSessionChange(rollbackManager,
|
||||
rollbackId, this /* BroadcastReceiver */, moduleMetadataPackage);
|
||||
rollbackId, this /* BroadcastReceiver */, logPackage);
|
||||
}
|
||||
};
|
||||
IntentFilter sessionUpdatedFilter =
|
||||
@@ -260,7 +260,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
||||
}
|
||||
|
||||
private void handleStagedSessionChange(RollbackManager rollbackManager, int rollbackId,
|
||||
BroadcastReceiver listener, @Nullable VersionedPackage moduleMetadataPackage) {
|
||||
BroadcastReceiver listener, @Nullable VersionedPackage logPackage) {
|
||||
PackageInstaller packageInstaller =
|
||||
mContext.getPackageManager().getPackageInstaller();
|
||||
List<RollbackInfo> recentRollbacks =
|
||||
@@ -274,15 +274,19 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
||||
packageInstaller.getSessionInfo(sessionId);
|
||||
if (sessionInfo.isStagedSessionReady() && markStagedSessionHandled(rollbackId)) {
|
||||
mContext.unregisterReceiver(listener);
|
||||
saveLastStagedRollbackId(rollbackId);
|
||||
logEvent(moduleMetadataPackage,
|
||||
if (logPackage != null) {
|
||||
// We save the rollback id so that after reboot, we can log if rollback was
|
||||
// successful or not. If logPackage is null, then there is nothing to log.
|
||||
saveLastStagedRollbackId(rollbackId);
|
||||
}
|
||||
logEvent(logPackage,
|
||||
StatsLog
|
||||
.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED,
|
||||
WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN,
|
||||
"");
|
||||
} else if (sessionInfo.isStagedSessionFailed()
|
||||
&& markStagedSessionHandled(rollbackId)) {
|
||||
logEvent(moduleMetadataPackage,
|
||||
logEvent(logPackage,
|
||||
StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
|
||||
WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN,
|
||||
"");
|
||||
@@ -362,12 +366,12 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
||||
}
|
||||
}
|
||||
|
||||
private static void logEvent(@Nullable VersionedPackage moduleMetadataPackage, int type,
|
||||
private static void logEvent(@Nullable VersionedPackage logPackage, int type,
|
||||
int rollbackReason, @NonNull String failingPackageName) {
|
||||
Slog.i(TAG, "Watchdog event occurred of type: " + rollbackTypeToString(type));
|
||||
if (moduleMetadataPackage != null) {
|
||||
StatsLog.logWatchdogRollbackOccurred(type, moduleMetadataPackage.getPackageName(),
|
||||
moduleMetadataPackage.getVersionCode(), rollbackReason, failingPackageName);
|
||||
if (logPackage != null) {
|
||||
StatsLog.logWatchdogRollbackOccurred(type, logPackage.getPackageName(),
|
||||
logPackage.getVersionCode(), rollbackReason, failingPackageName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user