diff options
| author | 2025-02-26 18:08:19 +0800 | |
|---|---|---|
| committer | 2025-02-26 18:16:48 +0800 | |
| commit | e41913e59e96c62488dde6e6428a1a22b0586e38 (patch) | |
| tree | 63fc69eff09ea446d0cc732e425aa9276876e2a6 | |
| parent | 82468707da2189af976dd85adf1d88cdd5e1ae88 (diff) | |
Add metrics for waiting dexopt
Bug: 388159696
FLAG: EXEMPT add metrics
Test: run statsd_testdrive and check output: install_steps: 8
Change-Id: If5ec8af18317a2691041709d99a64bfe41d5460e
3 files changed, 19 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index 28117470e7a3..4bedb47693f2 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -1067,6 +1067,9 @@ final class InstallPackageHelper { void doPostDexopt(List<ReconciledPackage> reconciledPackages, List<InstallRequest> requests, Map<String, Boolean> createdAppId, MoveInfo moveInfo, long acquireTime) { + for (InstallRequest request : requests) { + request.onWaitDexoptFinished(); + } boolean success = false; try { if (commitInstallPackages(reconciledPackages)) { @@ -1218,6 +1221,7 @@ final class InstallPackageHelper { CompletableFuture<Void> future = DexOptHelper.performDexoptIfNeededAsync(request, mDexManager); completableFutures.add(future); + request.onWaitDexoptStarted(); } if (!completableFutures.isEmpty()) { diff --git a/services/core/java/com/android/server/pm/InstallRequest.java b/services/core/java/com/android/server/pm/InstallRequest.java index fbf5db5d9635..734920435e26 100644 --- a/services/core/java/com/android/server/pm/InstallRequest.java +++ b/services/core/java/com/android/server/pm/InstallRequest.java @@ -1028,6 +1028,18 @@ final class InstallRequest { } } + public void onWaitDexoptStarted() { + if (mPackageMetrics != null) { + mPackageMetrics.onStepStarted(PackageMetrics.STEP_WAIT_DEXOPT); + } + } + + public void onWaitDexoptFinished() { + if (mPackageMetrics != null) { + mPackageMetrics.onStepFinished(PackageMetrics.STEP_WAIT_DEXOPT); + } + } + public void onDexoptFinished(DexoptResult dexoptResult) { // Only report external profile warnings when installing from adb. The goal is to warn app // developers if they have provided bad external profiles, so it's not beneficial to report diff --git a/services/core/java/com/android/server/pm/PackageMetrics.java b/services/core/java/com/android/server/pm/PackageMetrics.java index 994ee421790c..22da3b2e7636 100644 --- a/services/core/java/com/android/server/pm/PackageMetrics.java +++ b/services/core/java/com/android/server/pm/PackageMetrics.java @@ -73,6 +73,7 @@ final class PackageMetrics { public static final int STEP_DEXOPT = 5; public static final int STEP_FREEZE_INSTALL = 6; public static final int STEP_RESTORE = 7; + public static final int STEP_WAIT_DEXOPT = 8; @IntDef(prefix = {"STEP_"}, value = { STEP_PREPARE, @@ -81,7 +82,8 @@ final class PackageMetrics { STEP_COMMIT, STEP_DEXOPT, STEP_FREEZE_INSTALL, - STEP_RESTORE + STEP_RESTORE, + STEP_WAIT_DEXOPT }) @Retention(RetentionPolicy.SOURCE) public @interface StepInt { |