From cbd4a36f600642f2bcbf096cdb07e47270529631 Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Tue, 28 Feb 2023 16:51:36 +0000 Subject: [PATCH] Skip persisting when there's no change. Only request the persisted file be updated when we have actually modified something inside the job. Bug: 141645789 Test: N/A Change-Id: I7764923817573d76be071aa076cd0a3a6f41d4ec --- .../java/com/android/server/job/JobServiceContext.java | 7 +++++-- .../java/com/android/server/job/controllers/JobStatus.java | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java index 29ab455336679..e60ed4ade9b7f 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java @@ -727,8 +727,11 @@ public final class JobServiceContext implements ServiceConnection { // Exception-throwing-can down the road to JobParameters.completeWork >:( return true; } - mService.mJobs.touchJob(mRunningJob); - return mRunningJob.completeWorkLocked(workId); + if (mRunningJob.completeWorkLocked(workId)) { + mService.mJobs.touchJob(mRunningJob); + return true; + } + return false; } } finally { Binder.restoreCallingIdentity(ident); diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java index 1971a11ca98ae..537a67039a826 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java @@ -828,6 +828,10 @@ public final class JobStatus { } } + /** + * Returns {@code true} if the JobWorkItem queue was updated, + * and {@code false} if nothing changed. + */ public boolean completeWorkLocked(int workId) { if (executingWork != null) { final int N = executingWork.size();