diff options
| author | 2019-03-13 16:14:26 +0000 | |
|---|---|---|
| committer | 2019-03-13 16:14:26 +0000 | |
| commit | ab3957afd1c5bcc082078f0c8ee3fd302b4ca813 (patch) | |
| tree | e424fffa89088c13af794c38f938bc8d0e261936 | |
| parent | d99936d9fde1b0c18638108f45b1e49b23e972bc (diff) | |
| parent | 6004600faafc9d8e0e8d0514e7c329058c8a1e48 (diff) | |
Merge "Add dumpsys for RollbackManager"
3 files changed, 66 insertions, 19 deletions
diff --git a/services/core/java/com/android/server/rollback/RollbackData.java b/services/core/java/com/android/server/rollback/RollbackData.java index 8a95877be71d..b37e2680605b 100644 --- a/services/core/java/com/android/server/rollback/RollbackData.java +++ b/services/core/java/com/android/server/rollback/RollbackData.java @@ -23,9 +23,11 @@ import android.content.rollback.RollbackInfo; import java.io.File; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.text.ParseException; import java.time.Instant; import java.util.ArrayList; + /** * Information about a rollback available for a set of atomically installed * packages. @@ -138,4 +140,27 @@ class RollbackData { public boolean isStaged() { return info.isStaged(); } + + static String rollbackStateToString(@RollbackState int state) { + switch (state) { + case RollbackData.ROLLBACK_STATE_ENABLING: return "enabling"; + case RollbackData.ROLLBACK_STATE_AVAILABLE: return "available"; + case RollbackData.ROLLBACK_STATE_COMMITTED: return "committed"; + } + throw new AssertionError("Invalid rollback state: " + state); + } + + static @RollbackState int rollbackStateFromString(String state) + throws ParseException { + switch (state) { + case "enabling": return RollbackData.ROLLBACK_STATE_ENABLING; + case "available": return RollbackData.ROLLBACK_STATE_AVAILABLE; + case "committed": return RollbackData.ROLLBACK_STATE_COMMITTED; + } + throw new ParseException("Invalid rollback state: " + state, 0); + } + + public String getStateAsString() { + return rollbackStateToString(state); + } } diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java index aba3f89fd1da..83d18a6a5e15 100644 --- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java @@ -50,11 +50,14 @@ import android.util.SparseLongArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.ArrayUtils; +import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.pm.Installer; import java.io.File; +import java.io.FileDescriptor; import java.io.IOException; +import java.io.PrintWriter; import java.security.SecureRandom; import java.time.Instant; import java.time.temporal.ChronoUnit; @@ -1273,4 +1276,39 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub { + rollbackData.info.getRollbackId(), ioe); } } + + @Override + protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); + synchronized (mLock) { + for (RollbackData data : mRollbacks) { + RollbackInfo info = data.info; + ipw.println(info.getRollbackId() + ":"); + ipw.increaseIndent(); + ipw.println("-state: " + data.getStateAsString()); + ipw.println("-timestamp: " + data.timestamp); + if (data.stagedSessionId != -1) { + ipw.println("-stagedSessionId: " + data.stagedSessionId); + } + ipw.println("-packages:"); + ipw.increaseIndent(); + for (PackageRollbackInfo pkg : info.getPackages()) { + ipw.println(pkg.getPackageName() + + " " + pkg.getVersionRolledBackFrom().getLongVersionCode() + + " -> " + pkg.getVersionRolledBackTo().getLongVersionCode()); + } + ipw.decreaseIndent(); + if (data.state == RollbackData.ROLLBACK_STATE_COMMITTED) { + ipw.println("-causePackages:"); + ipw.increaseIndent(); + for (VersionedPackage cPkg : info.getCausePackages()) { + ipw.println(cPkg.getPackageName() + " " + cPkg.getLongVersionCode()); + } + ipw.decreaseIndent(); + ipw.println("-committedSessionId: " + info.getCommittedSessionId()); + } + ipw.decreaseIndent(); + } + } + } } diff --git a/services/core/java/com/android/server/rollback/RollbackStore.java b/services/core/java/com/android/server/rollback/RollbackStore.java index 4f8f6856bb6f..2cfa46532834 100644 --- a/services/core/java/com/android/server/rollback/RollbackStore.java +++ b/services/core/java/com/android/server/rollback/RollbackStore.java @@ -16,6 +16,9 @@ package com.android.server.rollback; +import static com.android.server.rollback.RollbackData.rollbackStateFromString; +import static com.android.server.rollback.RollbackData.rollbackStateToString; + import android.annotation.NonNull; import android.content.pm.VersionedPackage; import android.content.rollback.PackageRollbackInfo; @@ -401,23 +404,4 @@ class RollbackStore { file.delete(); } } - - private static String rollbackStateToString(@RollbackData.RollbackState int state) { - switch (state) { - case RollbackData.ROLLBACK_STATE_ENABLING: return "enabling"; - case RollbackData.ROLLBACK_STATE_AVAILABLE: return "available"; - case RollbackData.ROLLBACK_STATE_COMMITTED: return "committed"; - } - throw new AssertionError("Invalid rollback state: " + state); - } - - private static @RollbackData.RollbackState int rollbackStateFromString(String state) - throws ParseException { - switch (state) { - case "enabling": return RollbackData.ROLLBACK_STATE_ENABLING; - case "available": return RollbackData.ROLLBACK_STATE_AVAILABLE; - case "committed": return RollbackData.ROLLBACK_STATE_COMMITTED; - } - throw new ParseException("Invalid rollback state: " + state, 0); - } } |