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
This commit is contained in:
committed by
Shunta Sato
parent
2aed62d664
commit
17d6768ee5
@@ -155,17 +155,20 @@ public final class DirectStatementService extends Service {
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (mThread != null) {
|
||||
mThread.quit();
|
||||
}
|
||||
|
||||
try {
|
||||
if (mHttpResponseCache != null) {
|
||||
mHttpResponseCache.delete();
|
||||
final HttpResponseCache responseCache = mHttpResponseCache;
|
||||
mHandler.post(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
if (responseCache != null) {
|
||||
responseCache.delete();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.i(TAG, "HTTP(S) response cache deletion failed:" + e);
|
||||
}
|
||||
Looper.myLooper().quit();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.i(TAG, "HTTP(S) response cache deletion failed:" + e);
|
||||
}
|
||||
});
|
||||
mHttpResponseCache = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user