Loading services/core/java/com/android/server/content/SyncJobService.java +45 −8 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ import android.os.RemoteException; import android.util.Log; import android.util.Slog; import android.util.SparseArray; import android.util.SparseBooleanArray; import com.android.internal.annotations.GuardedBy; public class SyncJobService extends JobService { private static final String TAG = "SyncManager"; Loading @@ -32,7 +35,14 @@ public class SyncJobService extends JobService { public static final String EXTRA_MESSENGER = "messenger"; private Messenger mMessenger; private SparseArray<JobParameters> jobParamsMap = new SparseArray<JobParameters>(); private final Object mLock = new Object(); @GuardedBy("mLock") private final SparseArray<JobParameters> mJobParamsMap = new SparseArray<>(); @GuardedBy("mLock") private final SparseBooleanArray mStartedSyncs = new SparseBooleanArray(); private final SyncLogger mLogger = SyncLogger.getInstance(); Loading Loading @@ -69,8 +79,10 @@ public class SyncJobService extends JobService { mLogger.purgeOldLogs(); boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE); synchronized (jobParamsMap) { jobParamsMap.put(params.getJobId(), params); synchronized (mLock) { final int jobId = params.getJobId(); mJobParamsMap.put(jobId, params); mStartedSyncs.delete(jobId); } Message m = Message.obtain(); m.what = SyncManager.SyncHandler.MESSAGE_START_SYNC; Loading @@ -97,8 +109,18 @@ public class SyncJobService extends JobService { + params.getStopReason()); } mLogger.log("onStopJob() ", mLogger.jobParametersToString(params)); synchronized (jobParamsMap) { jobParamsMap.remove(params.getJobId()); synchronized (mLock) { final int jobId = params.getJobId(); mJobParamsMap.remove(jobId); if (!mStartedSyncs.get(jobId)) { final String message = "Job " + jobId + " didn't start: params=" + jobParametersToString(params); mLogger.log(message); Slog.wtf(TAG, message); } mStartedSyncs.delete(jobId); } Message m = Message.obtain(); m.what = SyncManager.SyncHandler.MESSAGE_STOP_SYNC; Loading @@ -117,8 +139,8 @@ public class SyncJobService extends JobService { } public void callJobFinished(int jobId, boolean needsReschedule, String why) { synchronized (jobParamsMap) { JobParameters params = jobParamsMap.get(jobId); synchronized (mLock) { JobParameters params = mJobParamsMap.get(jobId); mLogger.log("callJobFinished()", " jobid=", jobId, " needsReschedule=", needsReschedule, Loading @@ -126,10 +148,25 @@ public class SyncJobService extends JobService { " why=", why); if (params != null) { jobFinished(params, needsReschedule); jobParamsMap.remove(jobId); mJobParamsMap.remove(jobId); } else { Slog.e(TAG, "Job params not found for " + String.valueOf(jobId)); } } } public void markSyncStarted(int jobId) { synchronized (mLock) { mStartedSyncs.put(jobId, true); } } public static String jobParametersToString(JobParameters params) { if (params == null) { return "job:null"; } else { return "job:#" + params.getJobId() + ":" + SyncOperation.maybeCreateFromJobExtras(params.getExtras()); } } } services/core/java/com/android/server/content/SyncLogger.java +1 −6 Original line number Diff line number Diff line Loading @@ -233,12 +233,7 @@ public class SyncLogger { @Override public String jobParametersToString(JobParameters params) { if (params == null) { return "job:null"; } else { return "job:#" + params.getJobId() + ":" + SyncOperation.maybeCreateFromJobExtras(params.getExtras()); } return SyncJobService.jobParametersToString(params); } @Override Loading services/core/java/com/android/server/content/SyncManager.java +2 −0 Original line number Diff line number Diff line Loading @@ -2898,6 +2898,8 @@ public class SyncManager { final boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE); if (isLoggable) Slog.v(TAG, op.toString()); mSyncJobService.markSyncStarted(op.jobId); if (mStorageIsLow) { deferSyncH(op, SYNC_DELAY_ON_LOW_STORAGE, "storage low"); return; Loading Loading
services/core/java/com/android/server/content/SyncJobService.java +45 −8 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ import android.os.RemoteException; import android.util.Log; import android.util.Slog; import android.util.SparseArray; import android.util.SparseBooleanArray; import com.android.internal.annotations.GuardedBy; public class SyncJobService extends JobService { private static final String TAG = "SyncManager"; Loading @@ -32,7 +35,14 @@ public class SyncJobService extends JobService { public static final String EXTRA_MESSENGER = "messenger"; private Messenger mMessenger; private SparseArray<JobParameters> jobParamsMap = new SparseArray<JobParameters>(); private final Object mLock = new Object(); @GuardedBy("mLock") private final SparseArray<JobParameters> mJobParamsMap = new SparseArray<>(); @GuardedBy("mLock") private final SparseBooleanArray mStartedSyncs = new SparseBooleanArray(); private final SyncLogger mLogger = SyncLogger.getInstance(); Loading Loading @@ -69,8 +79,10 @@ public class SyncJobService extends JobService { mLogger.purgeOldLogs(); boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE); synchronized (jobParamsMap) { jobParamsMap.put(params.getJobId(), params); synchronized (mLock) { final int jobId = params.getJobId(); mJobParamsMap.put(jobId, params); mStartedSyncs.delete(jobId); } Message m = Message.obtain(); m.what = SyncManager.SyncHandler.MESSAGE_START_SYNC; Loading @@ -97,8 +109,18 @@ public class SyncJobService extends JobService { + params.getStopReason()); } mLogger.log("onStopJob() ", mLogger.jobParametersToString(params)); synchronized (jobParamsMap) { jobParamsMap.remove(params.getJobId()); synchronized (mLock) { final int jobId = params.getJobId(); mJobParamsMap.remove(jobId); if (!mStartedSyncs.get(jobId)) { final String message = "Job " + jobId + " didn't start: params=" + jobParametersToString(params); mLogger.log(message); Slog.wtf(TAG, message); } mStartedSyncs.delete(jobId); } Message m = Message.obtain(); m.what = SyncManager.SyncHandler.MESSAGE_STOP_SYNC; Loading @@ -117,8 +139,8 @@ public class SyncJobService extends JobService { } public void callJobFinished(int jobId, boolean needsReschedule, String why) { synchronized (jobParamsMap) { JobParameters params = jobParamsMap.get(jobId); synchronized (mLock) { JobParameters params = mJobParamsMap.get(jobId); mLogger.log("callJobFinished()", " jobid=", jobId, " needsReschedule=", needsReschedule, Loading @@ -126,10 +148,25 @@ public class SyncJobService extends JobService { " why=", why); if (params != null) { jobFinished(params, needsReschedule); jobParamsMap.remove(jobId); mJobParamsMap.remove(jobId); } else { Slog.e(TAG, "Job params not found for " + String.valueOf(jobId)); } } } public void markSyncStarted(int jobId) { synchronized (mLock) { mStartedSyncs.put(jobId, true); } } public static String jobParametersToString(JobParameters params) { if (params == null) { return "job:null"; } else { return "job:#" + params.getJobId() + ":" + SyncOperation.maybeCreateFromJobExtras(params.getExtras()); } } }
services/core/java/com/android/server/content/SyncLogger.java +1 −6 Original line number Diff line number Diff line Loading @@ -233,12 +233,7 @@ public class SyncLogger { @Override public String jobParametersToString(JobParameters params) { if (params == null) { return "job:null"; } else { return "job:#" + params.getJobId() + ":" + SyncOperation.maybeCreateFromJobExtras(params.getExtras()); } return SyncJobService.jobParametersToString(params); } @Override Loading
services/core/java/com/android/server/content/SyncManager.java +2 −0 Original line number Diff line number Diff line Loading @@ -2898,6 +2898,8 @@ public class SyncManager { final boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE); if (isLoggable) Slog.v(TAG, op.toString()); mSyncJobService.markSyncStarted(op.jobId); if (mStorageIsLow) { deferSyncH(op, SYNC_DELAY_ON_LOW_STORAGE, "storage low"); return; Loading