commit | 5cfd41dfd3bd0601baabe074fef007d8b043bd6c | [log] [tgz] |
---|---|---|
author | Chiachang Wang <chiachangwang@google.com> | Tue Jul 27 09:36:04 2021 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Tue Jul 27 09:36:04 2021 +0000 |
tree | 476f13a5cd61898a4095390908dfcdfcfe99333d | |
parent | 3b0677d46f84e9b3446ea1d9b0802ace04aa9471 [diff] | |
parent | 8a47dfb768708eb6e134738f52e89c16fb3f480f [diff] |
Merge "Retry and ignore ConcurrentModificationException" am: 93bda73970 am: 8a47dfb768 Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1772444 Change-Id: Iaab7e7a9b22fdb1af6932e38c024dd636cefcb25
diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index b8f4129..b126791 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java
@@ -3170,7 +3170,18 @@ } private void dumpNetworkRequests(IndentingPrintWriter pw) { - for (NetworkRequestInfo nri : requestsSortedById()) { + NetworkRequestInfo[] infos = null; + while (infos == null) { + try { + infos = requestsSortedById(); + } catch (ConcurrentModificationException e) { + // mNetworkRequests should only be accessed from handler thread, except dump(). + // As dump() is never called in normal usage, it would be needlessly expensive + // to lock the collection only for its benefit. Instead, retry getting the + // requests if ConcurrentModificationException is thrown during dump(). + } + } + for (NetworkRequestInfo nri : infos) { pw.println(nri.toString()); } }