summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Olivier Gaillard <gaillard@google.com> 2024-01-05 15:25:38 +0000
committer Olivier Gaillard <gaillard@google.com> 2024-01-08 10:45:27 +0000
commit3f20161d8b9c0ba139d893da0d9ff23f942bf913 (patch)
tree16334d188d6a782151ed406e553657c42fb42e7c
parent03b5547f31363e8e9fb7d17695abda4f36227657 (diff)
Log an event when packages are installed to understand the impact on ANRs.
Bug: 318823843 Change-Id: I700ff65587f14a75e869c8c76a6ae7022f6c3067
-rw-r--r--proto/src/criticalevents/critical_event_log.proto3
-rw-r--r--services/core/java/com/android/server/criticalevents/CriticalEventLog.java8
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java2
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");