Fix issue with saving protos to disk during shutdown.

Test: Built and tested on device.
Bug: 172789268
Change-Id: I9cb65e7560f92387e92234929a0b7881f84d7b8f
This commit is contained in:
Trung Lam
2020-11-09 08:06:17 +00:00
parent 773641f557
commit 0d2bc8a574

View File

@@ -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