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

Commit 235343da authored by Bookatz's avatar Bookatz
Browse files

Fix statsd logging in BatteryStats (nesting prob.)

Several statsd atoms are not logged correctly from batterystats, due to
possible nesting issues (batterystats only reports a single stop at the
end, whereas statsd expects each stop, resulting in statsd thinking that
the event is still continuing). This cl fixes those.

Bug: 69478888
Test: current ones still pass
Change-Id: I3ae8d7cc3d2eec7d4ab2721c83d208384adbf690
parent 95f2965a
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -291,7 +291,7 @@ message BleScanResultReceived {
 * Logs when a sensor state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message SensorStateChanged {
    repeated AttributionNode attribution_node = 1;
@@ -329,7 +329,7 @@ message GpsScanStateChanged {
 * Logs when a sync manager sync state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message SyncStateChanged {
    repeated AttributionNode attribution_node = 1;
@@ -348,7 +348,7 @@ message SyncStateChanged {
 * Logs when a job scheduler job state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message ScheduledJobStateChanged {
    repeated AttributionNode attribution_node = 1;
@@ -365,7 +365,7 @@ message ScheduledJobStateChanged {

    // The reason a job has stopped.
    // This is only applicable when the state is FINISHED.
    // The default value is CANCELED.
    // The default value is STOP_REASON_UNKNOWN.
    optional android.app.job.StopReasonEnum stop_reason = 4;
}

@@ -373,7 +373,7 @@ message ScheduledJobStateChanged {
 * Logs when the audio state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message AudioStateChanged {
    repeated AttributionNode attribution_node = 1;
@@ -381,6 +381,8 @@ message AudioStateChanged {
    enum State {
        OFF = 0;
        ON = 1;
        // RESET indicates all audio stopped. Used when it (re)starts (e.g. after it crashes).
        RESET = 2;
    }
    optional State state = 2;
}
@@ -389,7 +391,7 @@ message AudioStateChanged {
 * Logs when the video codec state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message MediaCodecActivityChanged {
    repeated AttributionNode attribution_node = 1;
@@ -397,6 +399,8 @@ message MediaCodecActivityChanged {
    enum State {
        OFF = 0;
        ON = 1;
        // RESET indicates all mediaCodec stopped. Used when it (re)starts (e.g. after it crashes).
        RESET = 2;
    }
    optional State state = 2;
}
@@ -405,7 +409,7 @@ message MediaCodecActivityChanged {
 * Logs when the flashlight state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message FlashlightStateChanged {
    repeated AttributionNode attribution_node = 1;
@@ -413,6 +417,8 @@ message FlashlightStateChanged {
    enum State {
        OFF = 0;
        ON = 1;
        // RESET indicates all flashlight stopped. Used when it (re)starts (e.g. after it crashes).
        RESET = 2;
    }
    optional State state = 2;
}
@@ -421,7 +427,7 @@ message FlashlightStateChanged {
 * Logs when the camera state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message CameraStateChanged {
    repeated AttributionNode attribution_node = 1;
@@ -429,6 +435,8 @@ message CameraStateChanged {
    enum State {
        OFF = 0;
        ON = 1;
        // RESET indicates all camera stopped. Used when it (re)starts (e.g. after it crashes).
        RESET = 2;
    }
    optional State state = 2;
}
+1 −56
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.internal.os;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.job.JobProtoEnums;
import android.bluetooth.BluetoothActivityEnergyInfo;
import android.bluetooth.UidTraffic;
import android.content.ContentResolver;
@@ -5999,7 +5998,6 @@ public class BatteryStatsImpl extends BatteryStats {
            if (strengthBin >= 0) {
                if (!mWifiSignalStrengthsTimer[strengthBin].isRunningLocked()) {
                    mWifiSignalStrengthsTimer[strengthBin].startRunningLocked(elapsedRealtime);
                    StatsLog.write(StatsLog.WIFI_SIGNAL_STRENGTH_CHANGED, strengthBin);
                }
                mHistoryCur.states2 =
                        (mHistoryCur.states2&~HistoryItem.STATE2_WIFI_SIGNAL_STRENGTH_MASK)
@@ -6010,6 +6008,7 @@ public class BatteryStatsImpl extends BatteryStats {
            } else {
                stopAllWifiSignalStrengthTimersLocked(-1);
            }
            StatsLog.write(StatsLog.WIFI_SIGNAL_STRENGTH_CHANGED, strengthBin);
            mWifiSignalStrengthBin = strengthBin;
        }
    }
@@ -7250,25 +7249,17 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteAudioTurnedOnLocked(long elapsedRealtimeMs) {
            createAudioTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, getUid(), null,
                    StatsLog.AUDIO_STATE_CHANGED__STATE__ON);
        }
        public void noteAudioTurnedOffLocked(long elapsedRealtimeMs) {
            if (mAudioTurnedOnTimer != null) {
                mAudioTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mAudioTurnedOnTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, getUid(), null,
                            StatsLog.AUDIO_STATE_CHANGED__STATE__OFF);
                }
            }
        }
        public void noteResetAudioLocked(long elapsedRealtimeMs) {
            if (mAudioTurnedOnTimer != null) {
                mAudioTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, getUid(), null,
                        StatsLog.AUDIO_STATE_CHANGED__STATE__OFF);
            }
        }
@@ -7282,25 +7273,17 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteVideoTurnedOnLocked(long elapsedRealtimeMs) {
            createVideoTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, getUid(), null,
                    StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__ON);
        }
        public void noteVideoTurnedOffLocked(long elapsedRealtimeMs) {
            if (mVideoTurnedOnTimer != null) {
                mVideoTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mVideoTurnedOnTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, getUid(),
                            null, StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__OFF);
                }
            }
        }
        public void noteResetVideoLocked(long elapsedRealtimeMs) {
            if (mVideoTurnedOnTimer != null) {
                mVideoTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, getUid(), null,
                        StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__OFF);
            }
        }
@@ -7314,25 +7297,17 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteFlashlightTurnedOnLocked(long elapsedRealtimeMs) {
            createFlashlightTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, getUid(), null,
                    StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__ON);
        }
        public void noteFlashlightTurnedOffLocked(long elapsedRealtimeMs) {
            if (mFlashlightTurnedOnTimer != null) {
                mFlashlightTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mFlashlightTurnedOnTimer.isRunningLocked()) {
                    StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, getUid(), null,
                            StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__OFF);
                }
            }
        }
        public void noteResetFlashlightLocked(long elapsedRealtimeMs) {
            if (mFlashlightTurnedOnTimer != null) {
                mFlashlightTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, getUid(), null,
                        StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__OFF);
            }
        }
@@ -7346,25 +7321,17 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteCameraTurnedOnLocked(long elapsedRealtimeMs) {
            createCameraTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, getUid(), null,
                    StatsLog.CAMERA_STATE_CHANGED__STATE__ON);
        }
        public void noteCameraTurnedOffLocked(long elapsedRealtimeMs) {
            if (mCameraTurnedOnTimer != null) {
                mCameraTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mCameraTurnedOnTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, getUid(), null,
                            StatsLog.CAMERA_STATE_CHANGED__STATE__OFF);
                }
            }
        }
        public void noteResetCameraLocked(long elapsedRealtimeMs) {
            if (mCameraTurnedOnTimer != null) {
                mCameraTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, getUid(), null,
                        StatsLog.CAMERA_STATE_CHANGED__STATE__OFF);
            }
        }
@@ -10040,8 +10007,6 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mSyncStats.startObject(name);
            if (t != null) {
                t.startRunningLocked(elapsedRealtimeMs);
                StatsLog.write_non_chained(StatsLog.SYNC_STATE_CHANGED, getUid(), null, name,
                        StatsLog.SYNC_STATE_CHANGED__STATE__ON);
            }
        }
@@ -10049,10 +10014,6 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mSyncStats.stopObject(name);
            if (t != null) {
                t.stopRunningLocked(elapsedRealtimeMs);
                if (!t.isRunningLocked()) { // only tell statsd if truly stopped
                    StatsLog.write_non_chained(StatsLog.SYNC_STATE_CHANGED, getUid(), null, name,
                            StatsLog.SYNC_STATE_CHANGED__STATE__OFF);
                }
            }
        }
@@ -10060,9 +10021,6 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mJobStats.startObject(name);
            if (t != null) {
                t.startRunningLocked(elapsedRealtimeMs);
                StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, getUid(), null,
                        name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED,
                        JobProtoEnums.STOP_REASON_CANCELLED);
            }
        }
@@ -10070,11 +10028,6 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mJobStats.stopObject(name);
            if (t != null) {
                t.stopRunningLocked(elapsedRealtimeMs);
                if (!t.isRunningLocked()) { // only tell statsd if truly stopped
                    StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, getUid(), null,
                            name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED,
                            stopReason);
                }
            }
            if (mBsi.mOnBatteryTimeBase.isRunning()) {
                SparseIntArray types = mJobCompletions.get(name);
@@ -10182,10 +10135,6 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteStartSensor(int sensor, long elapsedRealtimeMs) {
            DualTimer t = getSensorTimerLocked(sensor, /* create= */ true);
            t.startRunningLocked(elapsedRealtimeMs);
            if (sensor != Sensor.GPS) {
                StatsLog.write_non_chained(StatsLog.SENSOR_STATE_CHANGED, getUid(), null, sensor,
                        StatsLog.SENSOR_STATE_CHANGED__STATE__ON);
            }
        }
        public void noteStopSensor(int sensor, long elapsedRealtimeMs) {
@@ -10193,10 +10142,6 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = getSensorTimerLocked(sensor, false);
            if (t != null) {
                t.stopRunningLocked(elapsedRealtimeMs);
                if (sensor != Sensor.GPS) {
                    StatsLog.write_non_chained(StatsLog.SENSOR_STATE_CHANGED, getUid(), null,
                             sensor, StatsLog.SENSOR_STATE_CHANGED__STATE__OFF);
                }
            }
        }
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ option java_multiple_files = true;
// Reasons a job is stopped.
// Primarily used in android.app.job.JobParameters.java.
enum StopReasonEnum {
  STOP_REASON_UNKNOWN = -1;
  STOP_REASON_CANCELLED = 0;
  STOP_REASON_CONSTRAINTS_NOT_SATISFIED = 1;
  STOP_REASON_PREEMPT = 2;
+39 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.am;

import android.app.ActivityManager;
import android.app.job.JobProtoEnums;
import android.bluetooth.BluetoothActivityEnergyInfo;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -438,6 +439,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteSyncStartLocked(name, uid);
            StatsLog.write_non_chained(StatsLog.SYNC_STATE_CHANGED, uid, null, name,
                    StatsLog.SYNC_STATE_CHANGED__STATE__ON);
        }
    }

@@ -445,6 +448,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteSyncFinishLocked(name, uid);
            StatsLog.write_non_chained(StatsLog.SYNC_STATE_CHANGED, uid, null, name,
                    StatsLog.SYNC_STATE_CHANGED__STATE__OFF);
        }
    }

@@ -452,6 +457,9 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteJobStartLocked(name, uid);
            StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uid, null,
                    name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED,
                    JobProtoEnums.STOP_REASON_UNKNOWN);
        }
    }

@@ -459,6 +467,9 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteJobFinishLocked(name, uid, stopReason);
            StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uid, null,
                    name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED,
                    stopReason);
        }
    }

@@ -573,6 +584,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteStartSensorLocked(uid, sensor);
            StatsLog.write_non_chained(StatsLog.SENSOR_STATE_CHANGED, uid, null, sensor,
                    StatsLog.SENSOR_STATE_CHANGED__STATE__ON);
        }
    }

@@ -580,6 +593,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteStopSensorLocked(uid, sensor);
            StatsLog.write_non_chained(StatsLog.SENSOR_STATE_CHANGED, uid, null,
                    sensor, StatsLog.SENSOR_STATE_CHANGED__STATE__OFF);
        }
    }

@@ -724,6 +739,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteAudioOnLocked(uid);
            StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, uid, null,
                    StatsLog.AUDIO_STATE_CHANGED__STATE__ON);
        }
    }

@@ -731,6 +748,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteAudioOffLocked(uid);
            StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, uid, null,
                    StatsLog.AUDIO_STATE_CHANGED__STATE__OFF);
        }
    }

@@ -738,6 +757,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteVideoOnLocked(uid);
            StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, uid, null,
                    StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__ON);
        }
    }

@@ -745,6 +766,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteVideoOffLocked(uid);
            StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, uid,
                    null, StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__OFF);
        }
    }

@@ -752,6 +775,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteResetAudioLocked();
            StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, -1, null,
                    StatsLog.AUDIO_STATE_CHANGED__STATE__RESET);
        }
    }

@@ -759,6 +784,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteResetVideoLocked();
            StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, -1, null,
                    StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__RESET);
        }
    }

@@ -766,6 +793,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteFlashlightOnLocked(uid);
            StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, uid, null,
                    StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__ON);
        }
    }

@@ -773,6 +802,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteFlashlightOffLocked(uid);
            StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, uid, null,
                    StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__OFF);
        }
    }

@@ -781,6 +812,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        if (DBG) Slog.d(TAG, "begin noteStartCamera");
        synchronized (mStats) {
            mStats.noteCameraOnLocked(uid);
            StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, uid, null,
                    StatsLog.CAMERA_STATE_CHANGED__STATE__ON);
        }
        if (DBG) Slog.d(TAG, "end noteStartCamera");
    }
@@ -789,6 +822,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteCameraOffLocked(uid);
            StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, uid, null,
                    StatsLog.CAMERA_STATE_CHANGED__STATE__OFF);
        }
    }

@@ -796,6 +831,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteResetCameraLocked();
            StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, -1, null,
                    StatsLog.CAMERA_STATE_CHANGED__STATE__RESET);
        }
    }

@@ -803,6 +840,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        enforceCallingPermission();
        synchronized (mStats) {
            mStats.noteResetFlashlightLocked();
            StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, -1, null,
                    StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__RESET);
        }
    }