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

Commit 17d6768e authored by Hidehiko Tsuchiya's avatar Hidehiko Tsuchiya Committed by Shunta Sato
Browse files

Defer deleting a http cache

Symptom:
StatementService was crashed due to the exception;
"java.lang.IllegalStateException: cache is closed"

Root cause:
The http cache is deleted at DirectStatementService#onDestroy
in main thread. If a worker thread is still alive and it tries to
access the cache, it fails with IllegalStateException.

Solution:
The request of deleting a cache was moved from the main thread to
worker. Now, the cache can be deleted safely.

Bug: 73911877
Change-Id: I61f4e62b00e35f4a272ef983758e61ef3bf2d180
parent 2aed62d6
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -155,17 +155,20 @@ public final class DirectStatementService extends Service {
    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mThread != null) {
            mThread.quit();
        }

        final HttpResponseCache responseCache = mHttpResponseCache;
        mHandler.post(new Runnable() {
            public void run() {
                try {
            if (mHttpResponseCache != null) {
                mHttpResponseCache.delete();
                    if (responseCache != null) {
                        responseCache.delete();
                    }
                } catch (IOException e) {
                    Log.i(TAG, "HTTP(S) response cache deletion failed:" + e);
                }
                Looper.myLooper().quit();
            }
        });
        mHttpResponseCache = null;
    }

    @Override