diff options
| author | 2020-11-10 06:50:31 +0000 | |
|---|---|---|
| committer | 2020-11-10 06:50:31 +0000 | |
| commit | 043ebe229e86ff3a5722e396aa86b65e4028c144 (patch) | |
| tree | ec9d38020fd09a8a54da9c16b343b8e09a379466 | |
| parent | 9a0675c3dd9bdf80eeeae466efde353dc91ea2d4 (diff) | |
| parent | 32d142933e7465f367d21cd54c6eb4ff132b1e60 (diff) | |
Merge "Fix issue with saving protos to disk during shutdown." am: 68e0de029a am: 26fcba8c97 am: 32d142933e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1492076
Change-Id: I49f5241d403b5f2b959a2967612e0c5790076c29
| -rw-r--r-- | services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java b/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java index c03a5a7f4bec..e4daddca4564 100644 --- a/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java +++ b/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java @@ -185,22 +185,23 @@ abstract class AbstractProtoDiskReadWriter<T> { * is useful for when device is powering off. */ @MainThread - synchronized void saveImmediately(@NonNull String fileName, @NonNull T data) { - mScheduledFileDataMap.put(fileName, data); + void saveImmediately(@NonNull String fileName, @NonNull T data) { + synchronized (this) { + mScheduledFileDataMap.put(fileName, data); + } triggerScheduledFlushEarly(); } @MainThread - private synchronized void triggerScheduledFlushEarly() { - if (mScheduledFileDataMap.isEmpty() || mScheduledExecutorService.isShutdown()) { - return; - } - // Cancel existing future. - if (mScheduledFuture != null) { - - // We shouldn't need to interrupt as this method and threaded task - // #flushScheduledData are both synchronized. - mScheduledFuture.cancel(true); + private void triggerScheduledFlushEarly() { + synchronized (this) { + if (mScheduledFileDataMap.isEmpty() || mScheduledExecutorService.isShutdown()) { + return; + } + // Cancel existing future. + if (mScheduledFuture != null) { + mScheduledFuture.cancel(true); + } } // Submit flush and blocks until it completes. Blocking will prevent the device from |