diff options
3 files changed, 25 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8856147b3aea..bc065d17e8aa 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 @@ public class ActivityManagerService extends IActivityManager.Stub } /** + * 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 570a1578a304..82d0b67d5018 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 @@ final class ActivityManagerShellCommand extends ShellCommand { 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 @@ final class ActivityManagerShellCommand extends ShellCommand { 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 baf062d28457..6087f76687bf 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 @@ package com.android.server.am; 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 @@ public class DropboxRateLimiter { 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; } |