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

Commit 360da342 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Do not log boot times for secondary users and upgrades"

parents 8c055cbe 4ba91b9a
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ public class SystemServiceManager {
    private final Context mContext;
    private boolean mSafeMode;
    private boolean mRuntimeRestarted;
    private boolean mFirstBoot;

    // Services that should receive lifecycle events.
    private final ArrayList<SystemService> mServices = new ArrayList<SystemService>();
@@ -260,16 +259,6 @@ public class SystemServiceManager {
        mRuntimeRestarted = runtimeRestarted;
    }

    /**
     * @return true if it's first boot after OTA
     */
    public boolean isFirstBoot() {
        return mFirstBoot;
    }

    void setFirstBoot(boolean firstBoot) {
        mFirstBoot = firstBoot;
    }

    /**
     * Outputs the state of this manager to the System log.
+15 −4
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import static com.android.server.am.UserState.STATE_RUNNING_UNLOCKING;
import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.Dialog;
import android.app.IStopUserCallback;
@@ -55,6 +56,7 @@ import android.app.KeyguardManager;
import android.content.Context;
import android.content.IIntentReceiver;
import android.content.Intent;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.BatteryStats;
@@ -255,7 +257,9 @@ final class UserController {
            // storage is already unlocked.
            if (uss.setState(STATE_BOOTING, STATE_RUNNING_LOCKED)) {
                mInjector.getUserManagerInternal().setUserState(userId, uss.state);
                if (!mInjector.isRuntimeRestarted() && !mInjector.isFirstBoot()) {
                // Do not report secondary users, runtime restarts or first boot/upgrade
                if (userId == UserHandle.USER_SYSTEM
                        && !mInjector.isRuntimeRestarted() && !mInjector.isFirstBootOrUpgrade()) {
                    int uptimeSeconds = (int)(SystemClock.elapsedRealtime() / 1000);
                    MetricsLogger.histogram(mInjector.getContext(),
                            "framework_locked_boot_completed", uptimeSeconds);
@@ -436,7 +440,9 @@ final class UserController {
            }

            Slog.d(TAG, "Sending BOOT_COMPLETE user #" + userId);
            if (!mInjector.isRuntimeRestarted() && !mInjector.isFirstBoot()) {
            // Do not report secondary users, runtime restarts or first boot/upgrade
            if (userId == UserHandle.USER_SYSTEM
                    && !mInjector.isRuntimeRestarted() && !mInjector.isFirstBootOrUpgrade()) {
                int uptimeSeconds = (int) (SystemClock.elapsedRealtime() / 1000);
                MetricsLogger.histogram(mInjector.getContext(), "framework_boot_completed",
                        uptimeSeconds);
@@ -1709,8 +1715,13 @@ final class UserController {
            return mService.mSystemServiceManager.isRuntimeRestarted();
        }

        boolean isFirstBoot() {
            return mService.mSystemServiceManager.isFirstBoot();
        boolean isFirstBootOrUpgrade() {
            IPackageManager pm = AppGlobals.getPackageManager();
            try {
                return pm.isFirstBoot() || pm.isUpgrade();
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }

        void sendPreBootBroadcast(int userId, boolean quiet, final Runnable onFinish) {
+7 −4
Original line number Diff line number Diff line
@@ -280,7 +280,7 @@ public final class SystemServer {
            Slog.i(TAG, "Entered the Android system server!");
            int uptimeMillis = (int) SystemClock.elapsedRealtime();
            EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_SYSTEM_RUN, uptimeMillis);
            if (!mRuntimeRestart && !mFirstBoot) {
            if (!mRuntimeRestart) {
                MetricsLogger.histogram(null, "boot_system_server_init", uptimeMillis);
            }

@@ -349,7 +349,6 @@ public final class SystemServer {
            // Create the system service manager.
            mSystemServiceManager = new SystemServiceManager(mSystemContext);
            mSystemServiceManager.setRuntimeRestarted(mRuntimeRestart);
            mSystemServiceManager.setFirstBoot(mFirstBoot);
            LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);
            // Prepare the thread pool for init tasks that can be parallelized
            SystemServerInitThreadPool.get();
@@ -376,7 +375,7 @@ public final class SystemServer {
        if (StrictMode.conditionallyEnableDebugLogging()) {
            Slog.i(TAG, "Enabled StrictMode for system server main thread.");
        }
        if (!mRuntimeRestart && !mFirstBoot) {
        if (!mRuntimeRestart && !isFirstBootOrUpgrade()) {
            int uptimeMillis = (int) SystemClock.elapsedRealtime();
            MetricsLogger.histogram(null, "boot_system_server_ready", uptimeMillis);
            final int MAX_UPTIME_MILLIS = 60 * 1000;
@@ -391,6 +390,10 @@ public final class SystemServer {
        throw new RuntimeException("Main thread loop unexpectedly exited");
    }

    private boolean isFirstBootOrUpgrade() {
        return mPackageManagerService.isFirstBoot() || mPackageManagerService.isUpgrade();
    }

    private void reportWtf(String msg, Throwable e) {
        Slog.w(TAG, "***********************************************");
        Slog.wtf(TAG, "BOOT FAILURE " + msg, e);
@@ -535,7 +538,7 @@ public final class SystemServer {
        mFirstBoot = mPackageManagerService.isFirstBoot();
        mPackageManager = mSystemContext.getPackageManager();
        traceEnd();
        if (!mRuntimeRestart && !mFirstBoot) {
        if (!mRuntimeRestart && !isFirstBootOrUpgrade()) {
            MetricsLogger.histogram(null, "boot_package_manager_init_ready",
                    (int) SystemClock.elapsedRealtime());
        }