Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c5ebc4b authored by Siim Sammul's avatar Siim Sammul
Browse files

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

Bug: 242671309
Test: atest ErrorsTest
Change-Id: I87b8c6e49c809d94a036ccac5d4381dba691e727
parent a39cb4ae
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -18007,6 +18007,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
     */
+7 −0
Original line number Diff line number Diff line
@@ -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();
+11 −0
Original line number Diff line number Diff line
@@ -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;
    }