Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18535a83 authored by Kweku Adams's avatar Kweku Adams Committed by Android (Google) Code Review
Browse files

Merge "Ensuring parity between JobScheduler's proto and text dumps."

parents 99e131d2 c3f9ba63
Loading
Loading
Loading
Loading
+17 −14
Original line number Original line Diff line number Diff line
@@ -509,9 +509,8 @@ class JobConcurrencyManager {
    public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) {
    public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) {
        final long token = proto.start(tag);
        final long token = proto.start(tag);


        proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE,
        proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE_STATE, mCurrentInteractiveState);
                mCurrentInteractiveState);
        proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE_STATE,
        proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE,
                mEffectiveInteractiveState);
                mEffectiveInteractiveState);


        proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS,
        proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS,
@@ -521,8 +520,9 @@ class JobConcurrencyManager {


        mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER);
        mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER);


        proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL,
        proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, mLastMemoryTrimLevel);
                mLastMemoryTrimLevel);

        mStatLogger.dumpProto(proto, JobConcurrencyManagerProto.STATS);


        proto.end(token);
        proto.end(token);
    }
    }
@@ -676,19 +676,14 @@ class JobConcurrencyManager {
                            + " Res BG: %d"
                            + " Res BG: %d"
                            + " Starting: %d / %d (%d)"
                            + " Starting: %d / %d (%d)"
                            + " Total: %d%s / %d%s (%d%s)",
                            + " Total: %d%s / %d%s (%d%s)",
                    mConfigNumMaxTotalJobs,
                    mConfigNumMaxTotalJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs,
                    mConfigNumMinBgJobs,
                    mConfigNumMaxBgJobs,


                    mNumRunningFgJobs, mNumRunningBgJobs,
                    mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs,
                    mNumRunningFgJobs + mNumRunningBgJobs,


                    mNumPendingFgJobs, mNumPendingBgJobs,
                    mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs,
                    mNumPendingFgJobs + mNumPendingBgJobs,


                    mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*",
                    mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*",
                    mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*",
                    mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*",

                    mNumActualMaxFgJobs + mNumActualMaxBgJobs,
                    mNumActualMaxFgJobs + mNumActualMaxBgJobs,
                    (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs)
                    (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs)
                            ? "" : "*",
                            ? "" : "*",
@@ -716,6 +711,14 @@ class JobConcurrencyManager {
            proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs);
            proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs);
            proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs);
            proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs);


            proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_FG_JOBS, mNumActualMaxFgJobs);
            proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_BG_JOBS, mNumActualMaxBgJobs);

            proto.write(JobCountTrackerProto.NUM_RESERVED_FOR_BG, mNumReservedForBg);

            proto.write(JobCountTrackerProto.NUM_STARTING_FG_JOBS, mNumStartingFgJobs);
            proto.write(JobCountTrackerProto.NUM_STARTING_BG_JOBS, mNumStartingBgJobs);

            proto.end(token);
            proto.end(token);
        }
        }
    }
    }
+15 −22
Original line number Original line Diff line number Diff line
@@ -3011,6 +3011,8 @@ public class JobSchedulerService extends com.android.server.SystemService
                    pw.print(job.isReady());
                    pw.print(job.isReady());
                    pw.print(" user=");
                    pw.print(" user=");
                    pw.print(areUsersStartedLocked(job));
                    pw.print(areUsersStartedLocked(job));
                    pw.print(" !thermal=");
                    pw.print(!isJobThermalConstrainedLocked(job));
                    pw.print(" !pending=");
                    pw.print(" !pending=");
                    pw.print(!mPendingJobs.contains(job));
                    pw.print(!mPendingJobs.contains(job));
                    pw.print(" !active=");
                    pw.print(" !active=");
@@ -3018,15 +3020,7 @@ public class JobSchedulerService extends com.android.server.SystemService
                    pw.print(" !backingup=");
                    pw.print(" !backingup=");
                    pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0));
                    pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0));
                    pw.print(" comp=");
                    pw.print(" comp=");
                    boolean componentPresent = false;
                    pw.print(isComponentUsable(job));
                    try {
                        componentPresent = (AppGlobals.getPackageManager().getServiceInfo(
                                job.getServiceComponent(),
                                PackageManager.MATCH_DEBUG_TRIAGED_MISSING,
                                job.getUserId()) != null);
                    } catch (RemoteException e) {
                    }
                    pw.print(componentPresent);
                    pw.println(")");
                    pw.println(")");
                }
                }
            } else {
            } else {
@@ -3177,27 +3171,24 @@ public class JobSchedulerService extends com.android.server.SystemService


                    job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed);
                    job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed);


                    // isReadyToBeExecuted
                    proto.write(
                            JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY_TO_BE_EXECUTED,
                            isReadyToBeExecutedLocked(job));
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY,
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY,
                            job.isReady());
                            job.isReady());
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_USER_STARTED,
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.ARE_USERS_STARTED,
                            areUsersStartedLocked(job));
                            areUsersStartedLocked(job));
                    proto.write(
                            JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_THERMAL_CONSTRAINED,
                            isJobThermalConstrainedLocked(job));
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING,
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING,
                            mPendingJobs.contains(job));
                            mPendingJobs.contains(job));
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE,
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE,
                            isCurrentlyActiveLocked(job));
                            isCurrentlyActiveLocked(job));
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP,
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP,
                            mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0);
                            mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0);
                    boolean componentPresent = false;
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_USABLE,
                    try {
                            isComponentUsable(job));
                        componentPresent = (AppGlobals.getPackageManager().getServiceInfo(
                                job.getServiceComponent(),
                                PackageManager.MATCH_DEBUG_TRIAGED_MISSING,
                                job.getUserId()) != null);
                    } catch (RemoteException e) {
                    }
                    proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_PRESENT,
                            componentPresent);


                    proto.end(rjToken);
                    proto.end(rjToken);
                }
                }
@@ -3234,7 +3225,7 @@ public class JobSchedulerService extends com.android.server.SystemService
                job.writeToShortProto(proto, PendingJob.INFO);
                job.writeToShortProto(proto, PendingJob.INFO);
                job.dump(proto, PendingJob.DUMP, false, nowElapsed);
                job.dump(proto, PendingJob.DUMP, false, nowElapsed);
                proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job));
                proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job));
                proto.write(PendingJob.ENQUEUED_DURATION_MS, nowUptime - job.madePending);
                proto.write(PendingJob.PENDING_DURATION_MS, nowUptime - job.madePending);


                proto.end(pjToken);
                proto.end(pjToken);
            }
            }
@@ -3283,6 +3274,8 @@ public class JobSchedulerService extends com.android.server.SystemService
            }
            }
            mConcurrencyManager.dumpProtoLocked(proto,
            mConcurrencyManager.dumpProtoLocked(proto,
                    JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed);
                    JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed);

            mJobs.getPersistStats().writeToProto(proto, JobSchedulerServiceDumpProto.PERSIST_STATS);
        }
        }


        proto.flush();
        proto.flush();
+6 −11
Original line number Original line Diff line number Diff line
@@ -115,32 +115,27 @@ public final class BackgroundJobsController extends StateController {
        final long mToken = proto.start(StateControllerProto.BACKGROUND);
        final long mToken = proto.start(StateControllerProto.BACKGROUND);


        mAppStateTracker.dumpProto(proto,
        mAppStateTracker.dumpProto(proto,
                StateControllerProto.BackgroundJobsController.FORCE_APP_STANDBY_TRACKER);
                StateControllerProto.BackgroundJobsController.APP_STATE_TRACKER);


        mService.getJobStore().forEachJob(predicate, (jobStatus) -> {
        mService.getJobStore().forEachJob(predicate, (jobStatus) -> {
            final long jsToken =
            final long jsToken =
                    proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS);
                    proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS);


            jobStatus.writeToShortProto(proto,
            jobStatus.writeToShortProto(proto, TrackedJob.INFO);
                    TrackedJob.INFO);
            final int sourceUid = jobStatus.getSourceUid();
            final int sourceUid = jobStatus.getSourceUid();
            proto.write(TrackedJob.SOURCE_UID, sourceUid);
            proto.write(TrackedJob.SOURCE_UID, sourceUid);
            final String sourcePkg = jobStatus.getSourcePackageName();
            final String sourcePkg = jobStatus.getSourcePackageName();
            proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg);
            proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg);


            proto.write(TrackedJob.IS_IN_FOREGROUND,
            proto.write(TrackedJob.IS_IN_FOREGROUND, mAppStateTracker.isUidActive(sourceUid));
                    mAppStateTracker.isUidActive(sourceUid));
            proto.write(TrackedJob.IS_WHITELISTED,
            proto.write(TrackedJob.IS_WHITELISTED,
                    mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) ||
                    mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) ||
                    mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid));
                    mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid));


            proto.write(
            proto.write(TrackedJob.CAN_RUN_ANY_IN_BACKGROUND,
                    TrackedJob.CAN_RUN_ANY_IN_BACKGROUND,
                    mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(sourceUid, sourcePkg));
                    mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(
                            sourceUid, sourcePkg));


            proto.write(
            proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED,
                    TrackedJob.ARE_CONSTRAINTS_SATISFIED,
                    (jobStatus.satisfiedConstraints &
                    (jobStatus.satisfiedConstraints &
                            JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0);
                            JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0);


+12 −0
Original line number Original line Diff line number Diff line
@@ -631,6 +631,18 @@ public final class ConnectivityController extends StateController implements
        final long token = proto.start(fieldId);
        final long token = proto.start(fieldId);
        final long mToken = proto.start(StateControllerProto.CONNECTIVITY);
        final long mToken = proto.start(StateControllerProto.CONNECTIVITY);


        for (int i = 0; i < mRequestedWhitelistJobs.size(); i++) {
            proto.write(
                    StateControllerProto.ConnectivityController.REQUESTED_STANDBY_EXCEPTION_UIDS,
                    mRequestedWhitelistJobs.keyAt(i));
        }
        for (int i = 0; i < mAvailableNetworks.size(); i++) {
            Network network = mAvailableNetworks.valueAt(i);
            if (network != null) {
                network.writeToProto(proto,
                        StateControllerProto.ConnectivityController.AVAILABLE_NETWORKS);
            }
        }
        for (int i = 0; i < mTrackedJobs.size(); i++) {
        for (int i = 0; i < mTrackedJobs.size(); i++) {
            final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i);
            final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i);
            for (int j = 0; j < jobs.size(); j++) {
            for (int j = 0; j < jobs.size(); j++) {
+1 −2
Original line number Original line Diff line number Diff line
@@ -269,8 +269,7 @@ public final class DeviceIdleJobsController extends StateController {
            proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid());
            proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid());
            proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName());
            proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName());
            proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED,
            proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED,
                    (jobStatus.satisfiedConstraints &
                    (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0);
                        JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0);
            proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted);
            proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted);
            proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus));
            proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus));


Loading