Fix JobScheduler race condition
The loading of jobs from disk is now done sychronously.
Bug: 16372824
Change-Id: Ica0592d6de51e89662c9e49ed1eb59209b64356c
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 3b52baf..587f596 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -69,7 +69,7 @@
* @hide
*/
public class JobSchedulerService extends com.android.server.SystemService
- implements StateChangedListener, JobCompletedListener, JobMapReadFinishedListener {
+ implements StateChangedListener, JobCompletedListener {
// TODO: Switch this off for final version.
static final boolean DEBUG = true;
/** The number of concurrent jobs we run at one time. */
@@ -487,28 +487,6 @@
mHandler.obtainMessage(MSG_JOB_EXPIRED, jobStatus).sendToTarget();
}
- /**
- * Disk I/O is finished, take the list of jobs we read from disk and add them to our
- * {@link JobStore}.
- * This is run on the {@link com.android.server.IoThread} instance, which is a separate thread,
- * and is called once at boot.
- */
- @Override
- public void onJobMapReadFinished(List<JobStatus> jobs) {
- synchronized (mJobs) {
- for (int i=0; i<jobs.size(); i++) {
- JobStatus js = jobs.get(i);
- if (mJobs.containsJobIdForUid(js.getJobId(), js.getUid())) {
- // An app with BOOT_COMPLETED *might* have decided to reschedule their job, in
- // the same amount of time it took us to read it from disk. If this is the case
- // we leave it be.
- continue;
- }
- startTrackingJob(js);
- }
- }
- }
-
private class JobHandler extends Handler {
public JobHandler(Looper looper) {