diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java index 3ba4df8fe0b52..dfd019d9fa9e5 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java @@ -265,14 +265,6 @@ class JobConcurrencyManager { ) ); - /** - * This array essentially stores the state of mActiveServices array. - * The ith index stores the job present on the ith JobServiceContext. - * We manipulate this array until we arrive at what jobs should be running on - * what JobServiceContext. - */ - JobStatus[] mRecycledAssignContextIdToJobMap = new JobStatus[MAX_JOB_CONTEXTS_COUNT]; - private final ArraySet mRecycledChanged = new ArraySet<>(); private final ArraySet mRecycledIdle = new ArraySet<>(); private final ArraySet mRecycledPreferredUidOnly = new ArraySet<>(); @@ -580,7 +572,6 @@ class JobConcurrencyManager { final List activeServices = mActiveServices; // To avoid GC churn, we recycle the arrays. - JobStatus[] contextIdToJobMap = mRecycledAssignContextIdToJobMap; final ArraySet changed = mRecycledChanged; final ArraySet idle = mRecycledIdle; final ArraySet preferredUidOnly = mRecycledPreferredUidOnly; @@ -638,7 +629,7 @@ class JobConcurrencyManager { idle.add(assignment); } if (DEBUG) { - Slog.d(TAG, printContextIdToJobMap(contextIdToJobMap, "running jobs initial")); + Slog.d(TAG, printAssignments("running jobs initial", stoppable, preferredUidOnly)); } mWorkCountTracker.onCountDone(); @@ -747,7 +738,8 @@ class JobConcurrencyManager { } } if (DEBUG) { - Slog.d(TAG, printContextIdToJobMap(contextIdToJobMap, "running jobs final")); + Slog.d(TAG, printAssignments("running jobs final", + stoppable, preferredUidOnly, changed)); Slog.d(TAG, "assignJobsToContexts: " + mWorkCountTracker.toString()); } @@ -1283,13 +1275,26 @@ class JobConcurrencyManager { return s.toString(); } - private static String printContextIdToJobMap(JobStatus[] map, String initial) { - StringBuilder s = new StringBuilder(initial + ": "); - for (int i=0; i... list) { + final StringBuilder s = new StringBuilder(header + ": "); + for (int l = 0; l < list.length; ++l) { + ArraySet assignments = list[l]; + for (int c = 0; c < assignments.size(); ++c) { + final ContextAssignment assignment = assignments.valueAt(c); + final JobStatus job = assignment.newJob == null + ? assignment.context.getRunningJobLocked() : assignment.newJob; + + if (l > 0 || c > 0) { + s.append(" "); + } + s.append("(").append(assignment.context.getId()).append("="); + if (job == null) { + s.append("nothing"); + } else { + s.append(job.getJobId()).append("/").append(job.getUid()); + } + s.append(")"); + } } return s.toString(); }