From d28f93fe8241be57ba3671aab5ea3cf09bc5fc4e Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Thu, 18 Feb 2021 11:56:27 -0800 Subject: [PATCH] Clean up JSS dumping code. Make JobSchedulerSerice dumping code utilize the increase/decreaseDedent methods of IndentingPrintWriter. Also reduce the amount we dump when an app filter is set. Further cleanup (of other files) will be done in separate CLs. Bug: 141645789 Bug: 176241740 Test: visually inspect dumpsys Change-Id: I6b3935bb300ddf4f41197674378ce7d81f855312 --- .../android/server/job/JobPackageTracker.java | 14 +- .../server/job/JobSchedulerService.java | 141 ++++++++++++------ .../ThermalStatusRestriction.java | 2 +- 3 files changed, 102 insertions(+), 55 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java b/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java index d05034797f3d7..b3f046ee59621 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java @@ -313,7 +313,7 @@ public final class JobPackageTracker { } void dump(PrintWriter pw, String header, String prefix, long now, long nowElapsed, - int filterUid) { + int filterAppId) { final long period = getTotalTime(now); pw.print(prefix); pw.print(header); pw.print(" at "); pw.print(DateFormat.format("yyyy-MM-dd-HH-mm-ss", mStartClockTime).toString()); @@ -325,7 +325,7 @@ public final class JobPackageTracker { final int NE = mEntries.size(); for (int i = 0; i < NE; i++) { int uid = mEntries.keyAt(i); - if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) { + if (filterAppId != -1 && filterAppId != UserHandle.getAppId(uid)) { continue; } ArrayMap uidMap = mEntries.valueAt(i); @@ -520,7 +520,7 @@ public final class JobPackageTracker { return time / (float)period; } - public void dump(PrintWriter pw, String prefix, int filterUid) { + public void dump(PrintWriter pw, String prefix, int filterAppId) { final long now = sUptimeMillisClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final DataSet total; @@ -533,11 +533,11 @@ public final class JobPackageTracker { mCurDataSet.addTo(total, now); for (int i = 1; i < mLastDataSets.length; i++) { if (mLastDataSets[i] != null) { - mLastDataSets[i].dump(pw, "Historical stats", prefix, now, nowElapsed, filterUid); + mLastDataSets[i].dump(pw, "Historical stats", prefix, now, nowElapsed, filterAppId); pw.println(); } } - total.dump(pw, "Current stats", prefix, now, nowElapsed, filterUid); + total.dump(pw, "Current stats", prefix, now, nowElapsed, filterAppId); } public void dump(ProtoOutputStream proto, long fieldId, int filterUid) { @@ -566,7 +566,7 @@ public final class JobPackageTracker { proto.end(token); } - public boolean dumpHistory(PrintWriter pw, String prefix, int filterUid) { + public boolean dumpHistory(PrintWriter pw, String prefix, int filterAppId) { final int size = mEventIndices.size(); if (size <= 0) { return false; @@ -576,7 +576,7 @@ public final class JobPackageTracker { for (int i=0; i predicate = (js) -> { - return filterUidFinal == -1 || UserHandle.getAppId(js.getUid()) == filterUidFinal - || UserHandle.getAppId(js.getSourceUid()) == filterUidFinal; + return filterAppId == -1 || UserHandle.getAppId(js.getUid()) == filterAppId + || UserHandle.getAppId(js.getSourceUid()) == filterAppId; }; synchronized (mLock) { mConstants.dump(pw); @@ -3041,7 +3041,6 @@ public class JobSchedulerService extends com.android.server.SystemService for (int i = mJobRestrictions.size() - 1; i >= 0; i--) { mJobRestrictions.get(i).dumpConstants(pw); - pw.println(); } pw.println(); @@ -3052,21 +3051,25 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print("Registered "); pw.print(mJobs.size()); pw.println(" jobs:"); + pw.increaseIndent(); + boolean jobPrinted = false; if (mJobs.size() > 0) { final List jobs = mJobs.mJobSet.getAllJobs(); sortJobs(jobs); for (JobStatus job : jobs) { - pw.print(" JOB #"); job.printUniqueId(pw); pw.print(": "); - pw.println(job.toShortStringExceptUniqueId()); - // Skip printing details if the caller requested a filter if (!predicate.test(job)) { continue; } + jobPrinted = true; - job.dump(pw, " ", true, nowElapsed); + pw.print("JOB #"); job.printUniqueId(pw); pw.print(": "); + pw.println(job.toShortStringExceptUniqueId()); - pw.print(" Restricted due to:"); + pw.increaseIndent(); + job.dump(pw, "", true, nowElapsed); + + pw.print("Restricted due to:"); final boolean isRestricted = checkIfRestricted(job) != null; if (isRestricted) { for (int i = mJobRestrictions.size() - 1; i >= 0; i--) { @@ -3081,7 +3084,7 @@ public class JobSchedulerService extends com.android.server.SystemService } pw.println("."); - pw.print(" Ready: "); + pw.print("Ready: "); pw.print(isReadyToBeExecutedLocked(job)); pw.print(" (job="); pw.print(job.isReady()); @@ -3098,10 +3101,15 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" comp="); pw.print(isComponentUsable(job)); pw.println(")"); + + pw.decreaseIndent(); } - } else { - pw.println(" None."); } + if (!jobPrinted) { + pw.println("None."); + } + pw.decreaseIndent(); + for (int i=0; i 0) { - pw.println(); - pw.println("Backing up uids:"); - boolean first = true; - for (int i = 0; i < mBackingUpUids.size(); i++) { - int uid = mBackingUpUids.keyAt(i); - if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { - if (first) { - pw.print(" "); - first = false; - } else { - pw.print(", "); - } - pw.print(UserHandle.formatUid(uid)); + if (overridePrinted) { + pw.decreaseIndent(); + } + + boolean backingPrinted = false; + for (int i = 0; i < mBackingUpUids.size(); i++) { + int uid = mBackingUpUids.keyAt(i); + if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { + if (!backingPrinted) { + pw.println(); + pw.println("Backing up uids:"); + pw.increaseIndent(); + backingPrinted = true; + } else { + pw.print(", "); } + pw.print(UserHandle.formatUid(uid)); } + } + if (backingPrinted) { + pw.decreaseIndent(); pw.println(); } + pw.println(); - mJobPackageTracker.dump(pw, "", filterUidFinal); + mJobPackageTracker.dump(pw, "", filterAppId); pw.println(); - if (mJobPackageTracker.dumpHistory(pw, "", filterUidFinal)) { + if (mJobPackageTracker.dumpHistory(pw, "", filterAppId)) { pw.println(); } + + boolean pendingPrinted = false; pw.println("Pending queue:"); + pw.increaseIndent(); for (int i=0; i predicate = (js) -> { - return filterUidFinal == -1 || UserHandle.getAppId(js.getUid()) == filterUidFinal - || UserHandle.getAppId(js.getSourceUid()) == filterUidFinal; + return filterAppId == -1 || UserHandle.getAppId(js.getUid()) == filterAppId + || UserHandle.getAppId(js.getSourceUid()) == filterAppId; }; synchronized (mLock) { @@ -3278,7 +3325,7 @@ public class JobSchedulerService extends com.android.server.SystemService } for (int i=0; i< mUidPriorityOverride.size(); i++) { int uid = mUidPriorityOverride.keyAt(i); - if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { + if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { long pToken = proto.start(JobSchedulerServiceDumpProto.PRIORITY_OVERRIDES); proto.write(JobSchedulerServiceDumpProto.PriorityOverride.UID, uid); proto.write(JobSchedulerServiceDumpProto.PriorityOverride.OVERRIDE_VALUE, @@ -3288,15 +3335,15 @@ public class JobSchedulerService extends com.android.server.SystemService } for (int i = 0; i < mBackingUpUids.size(); i++) { int uid = mBackingUpUids.keyAt(i); - if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { + if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { proto.write(JobSchedulerServiceDumpProto.BACKING_UP_UIDS, uid); } } mJobPackageTracker.dump(proto, JobSchedulerServiceDumpProto.PACKAGE_TRACKER, - filterUidFinal); + filterAppId); mJobPackageTracker.dumpHistory(proto, JobSchedulerServiceDumpProto.HISTORY, - filterUidFinal); + filterAppId); for (JobStatus job : mPendingJobs) { final long pjToken = proto.start(JobSchedulerServiceDumpProto.PENDING_JOBS); diff --git a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java index 40c8ce0d5c892..954a5b8bdaa88 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java +++ b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java @@ -64,7 +64,7 @@ public class ThermalStatusRestriction extends JobRestriction { @Override public void dumpConstants(IndentingPrintWriter pw) { pw.print("In thermal throttling?: "); - pw.print(mIsThermalRestricted); + pw.println(mIsThermalRestricted); } @Override