summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shafik Nassar <shafik@google.com> 2019-03-13 16:14:26 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-03-13 16:14:26 +0000
commitab3957afd1c5bcc082078f0c8ee3fd302b4ca813 (patch)
treee424fffa89088c13af794c38f938bc8d0e261936
parentd99936d9fde1b0c18638108f45b1e49b23e972bc (diff)
parent6004600faafc9d8e0e8d0514e7c329058c8a1e48 (diff)
Merge "Add dumpsys for RollbackManager"
-rw-r--r--services/core/java/com/android/server/rollback/RollbackData.java25
-rw-r--r--services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java38
-rw-r--r--services/core/java/com/android/server/rollback/RollbackStore.java22
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);
- }
}