summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKweku Adams <kwekua@google.com>2021-07-22 10:47:06 -0700
committerKweku Adams <kwekua@google.com>2021-07-23 22:57:40 +0000
commite2ca493505cd4e54feebcd5ff9a1ab3a42954963 (patch)
treeb10ca6a2a49781012e5097ba8218dc8da64e7e4a
parent6ae2d75bbadd686eadce16ff93eb8e65f3302645 (diff)
downloadCalendarProvider-e2ca493505cd4e54feebcd5ff9a1ab3a42954963.tar.gz
Make sure the worker thread doesn't start processing new JobWorkItems after JS calls onStopJob(). Bug: 194358301 Test: atest CalendarProviderTests Change-Id: I0af5291c0f8506eeb078ca1515249b9b1b6ff880
-rw-r--r--src/com/android/providers/calendar/CalendarProviderJobService.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/com/android/providers/calendar/CalendarProviderJobService.java b/src/com/android/providers/calendar/CalendarProviderJobService.java
index bfec48a..908304d 100644
--- a/src/com/android/providers/calendar/CalendarProviderJobService.java
+++ b/src/com/android/providers/calendar/CalendarProviderJobService.java
@@ -29,6 +29,8 @@ public class CalendarProviderJobService extends JobService {
private static final String TAG = CalendarProvider2.TAG;
static final int JOB_ID = CalendarProviderJobService.class.hashCode();
+ private volatile boolean canRun;
+
@Override
public boolean onStartJob(JobParameters params) {
if (!params.isExpeditedJob()) {
@@ -44,6 +46,7 @@ public class CalendarProviderJobService extends JobService {
return false;
}
+ canRun = true;
final CalendarProvider2 provider = (CalendarProvider2) cprovider;
new Thread(() -> {
@@ -58,6 +61,9 @@ public class CalendarProviderJobService extends JobService {
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "Next alarm set.");
}
+ if (!canRun) {
+ break;
+ }
params.completeWork(jwi);
}
}).start();
@@ -70,6 +76,7 @@ public class CalendarProviderJobService extends JobService {
Slog.wtf(TAG, "CalendarProviderJobService was stopped due to "
+ JobParameters.getInternalReasonCodeDescription(params.getInternalStopReasonCode())
+ "(" + params.getStopReason() + ")");
+ canRun = false;
return true;
}
}