Merge "Add the ability to reset dropbox rate limiter with a shell command." am: 1a0d812cd8 am: 7f94f53ee2 am: d4e2ca0c98
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2201637
Change-Id: Icef47d84bd2ef78e01e47d2349fe2b706e1d53ca
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 8856147..bc065d1 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -17794,6 +17794,13 @@
}
/**
+ * Reset the dropbox rate limiter
+ */
+ void resetDropboxRateLimiter() {
+ mDropboxRateLimiter.reset();
+ }
+
+ /**
* Kill processes for the user with id userId and that depend on the package named packageName
*/
@Override
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index a3ae35e..869c6a4 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -350,6 +350,8 @@
return runSetBgAbusiveUids(pw);
case "list-bg-exemptions-config":
return runListBgExemptionsConfig(pw);
+ case "reset-dropbox-rate-limiter":
+ return runResetDropboxRateLimiter();
default:
return handleDefaultCommands(cmd);
}
@@ -3374,6 +3376,11 @@
return 0;
}
+ int runResetDropboxRateLimiter() throws RemoteException {
+ mInternal.resetDropboxRateLimiter();
+ return 0;
+ }
+
private Resources getResources(PrintWriter pw) throws RemoteException {
// system resources does not contain all the device configuration, construct it manually.
Configuration config = mInterface.getConfiguration();
diff --git a/services/core/java/com/android/server/am/DropboxRateLimiter.java b/services/core/java/com/android/server/am/DropboxRateLimiter.java
index baf062d..6087f76 100644
--- a/services/core/java/com/android/server/am/DropboxRateLimiter.java
+++ b/services/core/java/com/android/server/am/DropboxRateLimiter.java
@@ -19,11 +19,13 @@
import android.os.SystemClock;
import android.text.format.DateUtils;
import android.util.ArrayMap;
+import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
/** Rate limiter for adding errors into dropbox. */
public class DropboxRateLimiter {
+ private static final String TAG = "DropboxRateLimiter";
// After RATE_LIMIT_ALLOWED_ENTRIES have been collected (for a single breakdown of
// process/eventType) further entries will be rejected until RATE_LIMIT_BUFFER_DURATION has
// elapsed, after which the current count for this breakdown will be reset.
@@ -105,6 +107,15 @@
mLastMapCleanUp = now;
}
+ /** Resets the rate limiter memory. */
+ void reset() {
+ synchronized (mErrorClusterRecords) {
+ mErrorClusterRecords.clear();
+ }
+ mLastMapCleanUp = 0L;
+ Slog.i(TAG, "Rate limiter reset.");
+ }
+
String errorKey(String eventType, String processName) {
return eventType + processName;
}