From ec65308e4bae22ceaeeafdb5f98a9d943388ac86 Mon Sep 17 00:00:00 2001 From: Jing Ji Date: Tue, 4 May 2021 18:02:56 -0700 Subject: [PATCH] Skip STATE_SERVICE_RESTARTING while dumping procstats to statsd Because it's not a real process state. Bug: 186438656 Test: atest ProcStatsValidationTests Test: atest ProcessStatsDumpsysTest Test: atest CtsIncidentHostTestCases:ProcStatsProtoTest Test: atest CtsStatsdHostTestCases Test: atest CtsAppTestCases:ActivityManagerProcessStateTest Change-Id: I26d170f5acac8434548aa62b439c26141ad99c3e --- .../com/android/internal/app/procstats/DumpUtils.java | 1 - .../com/android/internal/app/procstats/ProcessState.java | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/app/procstats/DumpUtils.java b/core/java/com/android/internal/app/procstats/DumpUtils.java index 2785c21baf953..bce0d6076d24a 100644 --- a/core/java/com/android/internal/app/procstats/DumpUtils.java +++ b/core/java/com/android/internal/app/procstats/DumpUtils.java @@ -93,7 +93,6 @@ public final class DumpUtils { STATE_LABELS[STATE_BOUND_TOP_OR_FGS] = "Bnd TopFgs"; STATE_LABELS[STATE_FGS] = " Fgs"; STATE_LABELS[STATE_IMPORTANT_FOREGROUND] = " Imp Fg"; - STATE_LABELS[STATE_IMPORTANT_FOREGROUND] = " Imp Fg"; STATE_LABELS[STATE_IMPORTANT_BACKGROUND] = " Imp Bg"; STATE_LABELS[STATE_BACKUP] = " Backup"; STATE_LABELS[STATE_SERVICE] = " Service"; diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java index 4bced27cafb4e..d259b7fe07821 100644 --- a/core/java/com/android/internal/app/procstats/ProcessState.java +++ b/core/java/com/android/internal/app/procstats/ProcessState.java @@ -1550,6 +1550,10 @@ public final class ProcessState { final int key = mDurations.getKeyAt(i); final int type = SparseMappingTable.getIdFromKey(key); final int aggregatedType = DumpUtils.aggregateCurrentProcessState(type); + if ((type % STATE_COUNT) == STATE_SERVICE_RESTARTING) { + // Skip restarting service state -- that is not actually a running process. + continue; + } long time = mDurations.getValue(key); if (mCurCombinedState == type) { @@ -1563,7 +1567,9 @@ public final class ProcessState { durationByState.put(aggregatedType, time); } } - if (!didCurState && mCurCombinedState != STATE_NOTHING) { + if (!didCurState && mCurCombinedState != STATE_NOTHING + && (mCurCombinedState % STATE_COUNT) != STATE_SERVICE_RESTARTING) { + // Skip restarting service state -- that is not actually a running process. final int aggregatedType = DumpUtils.aggregateCurrentProcessState(mCurCombinedState); int index = durationByState.indexOfKey(aggregatedType); if (index >= 0) {