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

Commit dd5ccccd authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge "Extend health checks to monitor excessive pending broadcasts." into main

parents db956117 30f8bfcd
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -298,6 +298,15 @@ public class BroadcastConstants {
    private static final long DEFAULT_PENDING_COLD_START_ABANDON_TIMEOUT_MILLIS =
            TimeUnit.MINUTES.toMillis(5);

    /**
     * For {@link BroadcastQueueImpl}: Threshold of pending broadcasts for triggering a trace
     * event indicating a potential issue.
     */
    public int EXCESSIVE_PENDING_BROADCASTS = DEFAULT_EXCESSIVE_PENDING_BROADCASTS;
    private static final String KEY_EXCESSIVE_PENDING_BROADCASTS =
            "excessive_pending_broadcasts";
    private static final int DEFAULT_EXCESSIVE_PENDING_BROADCASTS = 5000;

    // Settings override tracking for this instance
    private String mSettingsKey;
    private SettingsObserver mSettingsObserver;
@@ -450,6 +459,8 @@ public class BroadcastConstants {
                    KEY_PENDING_COLD_START_ABANDON_TIMEOUT_MILLIS,
                    DEFAULT_PENDING_COLD_START_ABANDON_TIMEOUT_MILLIS)
                            * Build.HW_TIMEOUT_MULTIPLIER;
            EXCESSIVE_PENDING_BROADCASTS = getDeviceConfigInt(KEY_EXCESSIVE_PENDING_BROADCASTS,
                    DEFAULT_EXCESSIVE_PENDING_BROADCASTS);
        }

        // TODO: migrate BroadcastRecord to accept a BroadcastConstants
@@ -509,6 +520,7 @@ public class BroadcastConstants {
                    MAX_FROZEN_OUTGOING_BROADCASTS).println();
            pw.print(KEY_PENDING_COLD_START_ABANDON_TIMEOUT_MILLIS,
                    PENDING_COLD_START_ABANDON_TIMEOUT_MILLIS).println();
            pw.print(KEY_EXCESSIVE_PENDING_BROADCASTS, EXCESSIVE_PENDING_BROADCASTS).println();
            pw.decreaseIndent();
            pw.println();
        }
+4 −0
Original line number Diff line number Diff line
@@ -151,6 +151,10 @@ public class BroadcastHistory {
        mSummaryHistoryNext = ringAdvance(mSummaryHistoryNext, 1, MAX_BROADCAST_SUMMARY_HISTORY);
    }

    public int getPendingBroadcastsCount() {
        return mPendingBroadcasts.size();
    }

    private int ringAdvance(int x, final int increment, final int ringSize) {
        x += increment;
        if (x < 0) return (ringSize - 1);
+3 −1
Original line number Diff line number Diff line
@@ -77,7 +77,6 @@ import android.text.format.DateUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.IndentingPrintWriter;
import android.util.MathUtils;
import android.util.Pair;
import android.util.Slog;
import android.util.SparseArray;
@@ -1996,6 +1995,9 @@ class BroadcastQueueImpl extends BroadcastQueue {
                leaf = leaf.processNameNext;
            }
        }

        checkState(mHistory.getPendingBroadcastsCount() < mConstants.EXCESSIVE_PENDING_BROADCASTS,
                "excessive pending broadcasts");
    }

    @SuppressWarnings("CheckResult")