Merge "Retry and ignore ConcurrentModificationException" am: 93bda73970

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1772444

Change-Id: Iffac4efceaac6b8d27b794c638ecb3358aeeff0a
This commit is contained in:
Chiachang Wang
2021-07-27 09:18:12 +00:00
committed by Automerger Merge Worker

View File

@@ -3162,7 +3162,18 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
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());
}
}