Merge "Add the ability to reset dropbox rate limiter with a shell command."

This commit is contained in:
Siim Sammul
2022-08-31 10:16:47 +00:00
committed by Android (Google) Code Review
3 changed files with 25 additions and 0 deletions

View File

@@ -17880,6 +17880,13 @@ public class ActivityManagerService extends IActivityManager.Stub
mCoreSettingsObserver.onChange(true);
}
/**
* 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
*/

View File

@@ -363,6 +363,8 @@ final class ActivityManagerShellCommand extends ShellCommand {
return runGetBgRestrictionLevel(pw);
case "observe-foreground-process":
return runGetCurrentForegroundProcess(pw, mInternal, mTaskInterface);
case "reset-dropbox-rate-limiter":
return runResetDropboxRateLimiter();
default:
return handleDefaultCommands(cmd);
}
@@ -3577,6 +3579,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();

View File

@@ -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;
}