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

Commit 75416335 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11853201 from 793a7090 to 24Q3-release

Change-Id: If91d696acae56bcc8b388327caf1081dc7ce6db7
parents 4a90dd43 793a7090
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ gensrcs {
        "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",

    srcs: [
        ":aconfigd_protos",
        ":ipconnectivity-proto-src",
        ":libstats_atom_enum_protos",
        ":libstats_atom_message_protos",
+8 −1
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ import android.os.Process;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.Trace;
import android.os.UserHandle;
import android.os.WorkSource;
import android.os.storage.StorageManagerInternal;
@@ -179,6 +180,8 @@ public class JobSchedulerService extends com.android.server.SystemService
    public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    public static final boolean DEBUG_STANDBY = DEBUG || false;

    public static final String TRACE_TRACK_NAME = "JobScheduler";

    /** The maximum number of jobs that we allow an app to schedule */
    private static final int MAX_JOBS_PER_APP = 150;
    /** The number of the most recently completed jobs to keep track of for debugging purposes. */
@@ -4344,7 +4347,11 @@ public class JobSchedulerService extends com.android.server.SystemService

                final boolean wasConsideredCharging = isConsideredCharging();
                mChargingPolicy = newPolicy;

                if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
                    Trace.instantForTrack(Trace.TRACE_TAG_SYSTEM_SERVER,
                            JobSchedulerService.TRACE_TRACK_NAME,
                            "CHARGING POLICY CHANGED#" + mChargingPolicy);
                }
                if (isConsideredCharging() != wasConsideredCharging) {
                    for (int c = mControllers.size() - 1; c >= 0; --c) {
                        mControllers.get(c).onBatteryStateChangedLocked();
+10 −22
Original line number Diff line number Diff line
@@ -535,29 +535,17 @@ public final class JobServiceContext implements ServiceConnection {
            sEnqueuedJwiAtJobStart.logSampleWithUid(job.getUid(), job.getWorkCount());
            final String sourcePackage = job.getSourcePackageName();
            if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
                final String componentPackage = job.getServiceComponent().getPackageName();
                String traceTag = "*job*<" + job.getSourceUid() + ">" + sourcePackage;
                if (!sourcePackage.equals(componentPackage)) {
                    traceTag += ":" + componentPackage;
                }
                traceTag += "/" + job.getServiceComponent().getShortClassName();
                if (!componentPackage.equals(job.serviceProcessName)) {
                    traceTag += "$" + job.serviceProcessName;
                }
                if (job.getNamespace() != null) {
                    traceTag += "@" + job.getNamespace();
                }
                traceTag += "#" + job.getJobId();

                // Use the context's ID to distinguish traces since there'll only be one job
                // running per context.
                Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "JobScheduler",
                        traceTag, getId());
                Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_SYSTEM_SERVER,
                        JobSchedulerService.TRACE_TRACK_NAME, job.computeSystemTraceTag(),
                        getId());
            }
            if (job.getAppTraceTag() != null) {
                // Use the job's ID to distinguish traces since the ID will be unique per app.
                Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_APP, "JobScheduler",
                        job.getAppTraceTag(), job.getJobId());
                Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_APP,
                        JobSchedulerService.TRACE_TRACK_NAME, job.getAppTraceTag(),
                        job.getJobId());
            }
            try {
                mBatteryStats.noteJobStart(job.getBatteryName(), job.getSourceUid());
@@ -1605,12 +1593,12 @@ public final class JobServiceContext implements ServiceConnection {
                completedJob.getFilteredTraceTag(),
                completedJob.getFilteredDebugTags());
        if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_SYSTEM_SERVER, "JobScheduler",
                    getId());
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_SYSTEM_SERVER,
                    JobSchedulerService.TRACE_TRACK_NAME, getId());
        }
        if (completedJob.getAppTraceTag() != null) {
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_APP, "JobScheduler",
                    completedJob.getJobId());
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_APP,
                    JobSchedulerService.TRACE_TRACK_NAME, completedJob.getJobId());
        }
        try {
            mBatteryStats.noteJobFinish(mRunningJob.getBatteryName(), mRunningJob.getSourceUid(),
+35 −0
Original line number Diff line number Diff line
@@ -572,6 +572,9 @@ public final class JobStatus {
    /** The reason a job most recently went from ready to not ready. */
    private int mReasonReadyToUnready = JobParameters.STOP_REASON_UNDEFINED;

    /** The system trace tag for this job. */
    private String mSystemTraceTag;

    /**
     * Core constructor for JobStatus instances.  All other ctors funnel down to this one.
     *
@@ -1058,6 +1061,38 @@ public final class JobStatus {
        return job.getTraceTag();
    }

    /** Returns a trace tag using debug information provided by job scheduler service. */
    @NonNull
    public String computeSystemTraceTag() {
        // Guarded by JobSchedulerService.mLock, no need for synchronization.
        if (mSystemTraceTag != null) {
            return mSystemTraceTag;
        }

        mSystemTraceTag = computeSystemTraceTagInner();
        return mSystemTraceTag;
    }

    @NonNull
    private String computeSystemTraceTagInner() {
        final String componentPackage = getServiceComponent().getPackageName();
        StringBuilder traceTag = new StringBuilder(128);
        traceTag.append("*job*<").append(sourceUid).append(">").append(sourcePackageName);
        if (!sourcePackageName.equals(componentPackage)) {
            traceTag.append(":").append(componentPackage);
        }
        traceTag.append("/").append(getServiceComponent().getShortClassName());
        if (!componentPackage.equals(serviceProcessName)) {
            traceTag.append("$").append(serviceProcessName);
        }
        if (mNamespace != null && !mNamespace.trim().isEmpty()) {
            traceTag.append("@").append(mNamespace);
        }
        traceTag.append("#").append(getJobId());

        return traceTag.toString();
    }

    /** Returns whether this job was scheduled by one app on behalf of another. */
    public boolean isProxyJob() {
        return mIsProxyJob;
+28 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.util.ArraySet;
@@ -2181,6 +2182,12 @@ public final class QuotaController extends StateController {
                    }
                    scheduleCutoff();
                }
            } else {
                if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
                    Trace.instantForTrack(Trace.TRACE_TAG_SYSTEM_SERVER,
                            JobSchedulerService.TRACE_TRACK_NAME,
                            "QC/- " + mPkg);
                }
            }
        }

@@ -2720,6 +2727,11 @@ public final class QuotaController extends StateController {
                        if (timeRemainingMs <= 50) {
                            // Less than 50 milliseconds left. Start process of shutting down jobs.
                            if (DEBUG) Slog.d(TAG, pkg + " has reached its quota.");
                            if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
                                Trace.instantForTrack(Trace.TRACE_TAG_SYSTEM_SERVER,
                                        JobSchedulerService.TRACE_TRACK_NAME,
                                        pkg + "#" + MSG_REACHED_TIME_QUOTA);
                            }
                            mStateChangedListener.onControllerStateChanged(
                                    maybeUpdateConstraintForPkgLocked(
                                            sElapsedRealtimeClock.millis(),
@@ -2748,6 +2760,11 @@ public final class QuotaController extends StateController {
                                pkg.userId, pkg.packageName);
                        if (timeRemainingMs <= 0) {
                            if (DEBUG) Slog.d(TAG, pkg + " has reached its EJ quota.");
                            if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
                                Trace.instantForTrack(Trace.TRACE_TAG_SYSTEM_SERVER,
                                        JobSchedulerService.TRACE_TRACK_NAME,
                                        pkg + "#" + MSG_REACHED_EJ_TIME_QUOTA);
                            }
                            mStateChangedListener.onControllerStateChanged(
                                    maybeUpdateConstraintForPkgLocked(
                                            sElapsedRealtimeClock.millis(),
@@ -2772,6 +2789,12 @@ public final class QuotaController extends StateController {
                            Slog.d(TAG, pkg + " has reached its count quota.");
                        }

                        if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
                            Trace.instantForTrack(Trace.TRACE_TAG_SYSTEM_SERVER,
                                    JobSchedulerService.TRACE_TRACK_NAME,
                                    pkg + "#" + MSG_REACHED_COUNT_QUOTA);
                        }

                        mStateChangedListener.onControllerStateChanged(
                                maybeUpdateConstraintForPkgLocked(
                                        sElapsedRealtimeClock.millis(),
@@ -2928,6 +2951,11 @@ public final class QuotaController extends StateController {
                            }
                            mTempAllowlistGraceCache.delete(uid);
                            mTopAppGraceCache.delete(uid);
                            if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
                                Trace.instantForTrack(Trace.TRACE_TAG_SYSTEM_SERVER,
                                        JobSchedulerService.TRACE_TRACK_NAME,
                                        "<" + uid + ">#" + MSG_END_GRACE_PERIOD);
                            }
                            final ArraySet<String> packages = mService.getPackagesForUidLocked(uid);
                            if (packages != null) {
                                final int userId = UserHandle.getUserId(uid);
Loading