diff options
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 d05034797f3d..b3f046ee5962 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<String, PackageEntry> 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<size; i++) { final int index = mEventIndices.indexOf(i); final int uid = mEventUids[index]; - if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) { + if (filterAppId != -1 && filterAppId != UserHandle.getAppId(uid)) { continue; } final int cmd = mEventCmds[index] & EVENT_CMD_MASK; diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java index fdbc0864a59d..00a6cd7e373b 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java @@ -3021,14 +3021,14 @@ public class JobSchedulerService extends com.android.server.SystemService } void dumpInternal(final IndentingPrintWriter pw, int filterUid) { - final int filterUidFinal = UserHandle.getAppId(filterUid); + final int filterAppId = UserHandle.getAppId(filterUid); final long now = sSystemClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final long nowUptime = sUptimeMillisClock.millis(); final Predicate<JobStatus> 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<JobStatus> 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.increaseIndent(); + job.dump(pw, "", true, nowElapsed); - pw.print(" Restricted due to:"); + 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<mControllers.size(); i++) { pw.println(); pw.println(mControllers.get(i).getClass().getSimpleName() + ":"); @@ -3109,66 +3117,105 @@ public class JobSchedulerService extends com.android.server.SystemService mControllers.get(i).dumpControllerStateLocked(pw, predicate); pw.decreaseIndent(); } - pw.println(); - pw.println("Uid priority overrides:"); + + boolean overridePrinted = false; for (int i=0; i< mUidPriorityOverride.size(); i++) { int uid = mUidPriorityOverride.keyAt(i); - if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { - pw.print(" "); pw.print(UserHandle.formatUid(uid)); + if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { + if (!overridePrinted) { + overridePrinted = true; + pw.println(); + pw.println("Uid priority overrides:"); + pw.increaseIndent(); + } + pw.print(UserHandle.formatUid(uid)); pw.print(": "); pw.println(mUidPriorityOverride.valueAt(i)); } } - if (mBackingUpUids.size() > 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<mPendingJobs.size(); i++) { JobStatus job = mPendingJobs.get(i); - pw.print(" Pending #"); pw.print(i); pw.print(": "); + if (!predicate.test(job)) { + continue; + } + if (!pendingPrinted) { + pendingPrinted = true; + } + + pw.print("Pending #"); pw.print(i); pw.print(": "); pw.println(job.toShortString()); - job.dump(pw, " ", false, nowElapsed); + + pw.increaseIndent(); + job.dump(pw, "", false, nowElapsed); int priority = evaluateJobPriorityLocked(job); - pw.print(" Evaluated priority: "); + pw.print("Evaluated priority: "); pw.println(JobInfo.getPriorityString(priority)); - pw.print(" Tag: "); pw.println(job.getTag()); - pw.print(" Enq: "); + pw.print("Tag: "); pw.println(job.getTag()); + pw.print("Enq: "); TimeUtils.formatDuration(job.madePending - nowUptime, pw); + pw.decreaseIndent(); pw.println(); } + if (!pendingPrinted) { + pw.println("None"); + } + pw.decreaseIndent(); + pw.println(); pw.println("Active jobs:"); pw.increaseIndent(); for (int i=0; i<mActiveServices.size(); i++) { JobServiceContext jsc = mActiveServices.get(i); + final JobStatus job = jsc.getRunningJobLocked(); + + if (job != null && !predicate.test(job)) { + continue; + } + pw.print("Slot #"); pw.print(i); pw.print(": "); jsc.dumpLocked(pw, nowElapsed); - final JobStatus job = jsc.getRunningJobLocked(); if (job != null) { pw.increaseIndent(); - job.dump(pw, " ", false, nowElapsed); + + pw.increaseIndent(); + job.dump(pw, "", false, nowElapsed); + pw.decreaseIndent(); + pw.print("Evaluated priority: "); pw.println(JobInfo.getPriorityString(job.lastEvaluatedPriority)); @@ -3176,8 +3223,8 @@ public class JobSchedulerService extends com.android.server.SystemService TimeUtils.formatDuration(job.madeActive - nowUptime, pw); pw.print(", pending for "); TimeUtils.formatDuration(job.madeActive - job.madePending, pw); - pw.println(); pw.decreaseIndent(); + pw.println(); } } pw.decreaseIndent(); @@ -3199,13 +3246,13 @@ public class JobSchedulerService extends com.android.server.SystemService void dumpInternalProto(final FileDescriptor fd, int filterUid) { ProtoOutputStream proto = new ProtoOutputStream(fd); - final int filterUidFinal = UserHandle.getAppId(filterUid); + final int filterAppId = UserHandle.getAppId(filterUid); final long now = sSystemClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final long nowUptime = sUptimeMillisClock.millis(); final Predicate<JobStatus> 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 40c8ce0d5c89..954a5b8bdaa8 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 |