summaryrefslogtreecommitdiff
path: root/packages/StatementService/src
diff options
context:
space:
mode:
authorHidehiko Tsuchiya <hidehiko.xa.tsuchiya@sonymobile.com>2018-01-18 13:50:55 +0900
committerShunta Sato <shunta.sato@sony.com>2018-02-27 15:27:11 +0900
commit17d6768ee516abccc69ce8a1eff99b9ed6eed27e (patch)
tree6cc0bf935ddd4389af58bee0b889d00c3c5851d1 /packages/StatementService/src
parent2aed62d6645879de71050995acd5dbc5b377c6ec (diff)
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
Diffstat (limited to 'packages/StatementService/src')
-rw-r--r--packages/StatementService/src/com/android/statementservice/DirectStatementService.java23
1 files changed, 13 insertions, 10 deletions
diff --git a/packages/StatementService/src/com/android/statementservice/DirectStatementService.java b/packages/StatementService/src/com/android/statementservice/DirectStatementService.java
index 449738e9c605..659696e0e212 100644
--- a/packages/StatementService/src/com/android/statementservice/DirectStatementService.java
+++ b/packages/StatementService/src/com/android/statementservice/DirectStatementService.java
@@ -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