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

Commit 4e7be87f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Avoid overlapping jobstore disk writes."

parents 530d8612 c3a32b86
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -335,7 +335,7 @@ public final class JobStore {
                    Slog.v(TAG, "Scheduling persist of jobs to disk.");
                }
                mIoHandler.postDelayed(mWriteRunnable, JOB_PERSIST_DELAY);
                mWriteScheduled = mWriteInProgress = true;
                mWriteScheduled = true;
            }
        }
    }
@@ -353,7 +353,7 @@ public final class JobStore {
                throw new IllegalStateException("An asynchronous write is already scheduled.");
            }

            mWriteScheduled = mWriteInProgress = true;
            mWriteScheduled = true;
            mWriteRunnable.run();
        }
    }
@@ -369,7 +369,7 @@ public final class JobStore {
        final long start = SystemClock.uptimeMillis();
        final long end = start + maxWaitMillis;
        synchronized (mWriteScheduleLock) {
            while (mWriteInProgress) {
            while (mWriteScheduled || mWriteInProgress) {
                final long now = SystemClock.uptimeMillis();
                if (now >= end) {
                    // still not done and we've hit the end; failure
@@ -404,6 +404,12 @@ public final class JobStore {
            // a bit of lock contention.
            synchronized (mWriteScheduleLock) {
                mWriteScheduled = false;
                if (mWriteInProgress) {
                    // Another runnable is currently writing. Postpone this new write task.
                    maybeWriteStatusToDiskAsync();
                    return;
                }
                mWriteInProgress = true;
            }
            synchronized (mLock) {
                // Clone the jobs so we can release the lock before writing.