Add proper lock to the dropbox throttling map
Bug: 156871564 Test: Manual Change-Id: I7da4f4b9586ea33eeb66875ab312701f49b62dd3
This commit is contained in:
@@ -10156,7 +10156,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
private volatile ArrayMap<String, long[]> mErrorClusterRecords = new ArrayMap<>();
|
||||
private final ArrayMap<String, long[]> mErrorClusterRecords = new ArrayMap<>();
|
||||
|
||||
/**
|
||||
* Write a description of an error (crash, WTF, ANR) to the drop box.
|
||||
@@ -10189,16 +10189,18 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
// Rate-limit how often we're willing to do the heavy lifting below to
|
||||
// collect and record logs; currently 5 logs per 10 second period per eventType.
|
||||
final long now = SystemClock.elapsedRealtime();
|
||||
long[] errRecord = mErrorClusterRecords.get(eventType);
|
||||
if (errRecord == null) {
|
||||
errRecord = new long[2]; // [0]: startTime, [1]: count
|
||||
mErrorClusterRecords.put(eventType, errRecord);
|
||||
}
|
||||
if (now - errRecord[0] > 10 * DateUtils.SECOND_IN_MILLIS) {
|
||||
errRecord[0] = now;
|
||||
errRecord[1] = 1L;
|
||||
} else {
|
||||
if (errRecord[1]++ >= 5) return;
|
||||
synchronized (mErrorClusterRecords) {
|
||||
long[] errRecord = mErrorClusterRecords.get(eventType);
|
||||
if (errRecord == null) {
|
||||
errRecord = new long[2]; // [0]: startTime, [1]: count
|
||||
mErrorClusterRecords.put(eventType, errRecord);
|
||||
}
|
||||
if (now - errRecord[0] > 10 * DateUtils.SECOND_IN_MILLIS) {
|
||||
errRecord[0] = now;
|
||||
errRecord[1] = 1L;
|
||||
} else {
|
||||
if (errRecord[1]++ >= 5) return;
|
||||
}
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder(1024);
|
||||
|
||||
Reference in New Issue
Block a user