Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1ab984b authored by Trung Lam's avatar Trung Lam
Browse files

Fix issue with saving protos to disk during shutdown.

Test: Built and tested on device.
Bug: 172789268
Change-Id: I9cb65e7560f92387e92234929a0b7881f84d7b8f
parent 26b017aa
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -185,23 +185,24 @@ abstract class AbstractProtoDiskReadWriter<T> {
     * is useful for when device is powering off.
     */
    @MainThread
    synchronized void saveImmediately(@NonNull String fileName, @NonNull T data) {
    void saveImmediately(@NonNull String fileName, @NonNull T data) {
        synchronized (this) {
            mScheduledFileDataMap.put(fileName, data);
        }
        triggerScheduledFlushEarly();
    }

    @MainThread
    private synchronized void triggerScheduledFlushEarly() {
    private void triggerScheduledFlushEarly() {
        synchronized (this) {
            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);
            }
        }

        // Submit flush and blocks until it completes. Blocking will prevent the device from
        // shutting down before flushing completes.