summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Trung Lam <lamtrung@google.com> 2020-11-10 06:50:31 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-11-10 06:50:31 +0000
commit043ebe229e86ff3a5722e396aa86b65e4028c144 (patch)
treeec9d38020fd09a8a54da9c16b343b8e09a379466
parent9a0675c3dd9bdf80eeeae466efde353dc91ea2d4 (diff)
parent32d142933e7465f367d21cd54c6eb4ff132b1e60 (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.java25
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