diff options
author | 2024-01-05 15:25:38 +0000 | |
---|---|---|
committer | 2024-01-08 10:45:27 +0000 | |
commit | 3f20161d8b9c0ba139d893da0d9ff23f942bf913 (patch) | |
tree | 16334d188d6a782151ed406e553657c42fb42e7c | |
parent | 03b5547f31363e8e9fb7d17695abda4f36227657 (diff) |
Log an event when packages are installed to understand the impact on ANRs.
Bug: 318823843
Change-Id: I700ff65587f14a75e869c8c76a6ae7022f6c3067
3 files changed, 13 insertions, 0 deletions
diff --git a/proto/src/criticalevents/critical_event_log.proto b/proto/src/criticalevents/critical_event_log.proto index 9cda2672eab0..cffcd0941df8 100644 --- a/proto/src/criticalevents/critical_event_log.proto +++ b/proto/src/criticalevents/critical_event_log.proto @@ -60,8 +60,11 @@ message CriticalEventProto { JavaCrash java_crash = 5; NativeCrash native_crash = 6; SystemServerStarted system_server_started = 7; + InstallPackages install_packages = 8; } + message InstallPackages {} + message SystemServerStarted {} message Watchdog { diff --git a/services/core/java/com/android/server/criticalevents/CriticalEventLog.java b/services/core/java/com/android/server/criticalevents/CriticalEventLog.java index 08143759fab4..816c3490d0a0 100644 --- a/services/core/java/com/android/server/criticalevents/CriticalEventLog.java +++ b/services/core/java/com/android/server/criticalevents/CriticalEventLog.java @@ -29,6 +29,7 @@ import com.android.server.criticalevents.nano.CriticalEventLogStorageProto; import com.android.server.criticalevents.nano.CriticalEventProto; import com.android.server.criticalevents.nano.CriticalEventProto.AppNotResponding; import com.android.server.criticalevents.nano.CriticalEventProto.HalfWatchdog; +import com.android.server.criticalevents.nano.CriticalEventProto.InstallPackages; import com.android.server.criticalevents.nano.CriticalEventProto.JavaCrash; import com.android.server.criticalevents.nano.CriticalEventProto.NativeCrash; import com.android.server.criticalevents.nano.CriticalEventProto.SystemServerStarted; @@ -142,6 +143,13 @@ public class CriticalEventLog { return System.currentTimeMillis(); } + /** Logs when one or more packages are installed. */ + public void logInstallPackagesStarted() { + CriticalEventProto event = new CriticalEventProto(); + event.setInstallPackages(new InstallPackages()); + log(event); + } + /** Logs when system server started. */ public void logSystemServerStarted() { CriticalEventProto event = new CriticalEventProto(); diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index 992d8eb8b1bb..dd9541e5dda1 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -175,6 +175,7 @@ import com.android.server.SystemConfig; import com.android.server.art.model.ArtFlags; import com.android.server.art.model.DexoptParams; import com.android.server.art.model.DexoptResult; +import com.android.server.criticalevents.CriticalEventLog; import com.android.server.pm.Installer.LegacyDexoptDisabledException; import com.android.server.pm.dex.ArtManagerService; import com.android.server.pm.dex.DexManager; @@ -957,6 +958,7 @@ final class InstallPackageHelper { final Set<String> scannedPackages = new ArraySet<>(requests.size()); final Map<String, Settings.VersionInfo> versionInfos = new ArrayMap<>(requests.size()); final Map<String, Boolean> createdAppId = new ArrayMap<>(requests.size()); + CriticalEventLog.getInstance().logInstallPackagesStarted(); boolean success = false; try { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "installPackagesLI"); |