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

Commit 95bd5411 authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Invoke BlobStoreManagerService.onStart() asynchronously.

Bug: 148299993
Test: atest cts/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java
Test: tradefed.sh run google/template/local --template:map \
      test google/continuous/boot-successive  \
      --no-first-boot --successive-boot --boot-count 10
Test: tradefed.sh run google/template/local --template:map \
      test google/continuous/boot-successive \
      --no-first-boot --successive-boot --boot-count 2 --granular-boot-info
Change-Id: I99e3ca1c28a47e6a855c6d61295e9ddb4b4ac29c
parent 424ad907
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -343,6 +343,7 @@ public final class SystemServer {

    private static final String START_SENSOR_SERVICE = "StartSensorService";
    private static final String START_HIDL_SERVICES = "StartHidlServices";
    private static final String START_BLOB_STORE_SERVICE = "startBlobStoreManagerService";

    private static final String SYSPROP_START_COUNT = "sys.system_server.start_count";
    private static final String SYSPROP_START_ELAPSED = "sys.system_server.start_elapsed";
@@ -350,6 +351,7 @@ public final class SystemServer {

    private Future<?> mSensorServiceStart;
    private Future<?> mZygotePreload;
    private Future<?> mBlobStoreServiceStart;

    /**
     * Start the sensor service. This is a blocking call and can take time.
@@ -1783,6 +1785,13 @@ public final class SystemServer {
                t.traceEnd();
            }

            mBlobStoreServiceStart = SystemServerInitThreadPool.submit(() -> {
                final TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog();
                traceLog.traceBegin(START_BLOB_STORE_SERVICE);
                mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS);
                traceLog.traceEnd();
            }, START_BLOB_STORE_SERVICE);

            // Dreams (interactive idle-time views, a/k/a screen savers, and doze mode)
            t.traceBegin("StartDreamManager");
            mSystemServiceManager.startService(DreamManagerService.class);
@@ -2027,10 +2036,6 @@ public final class SystemServer {
        mSystemServiceManager.startService(ClipboardService.class);
        t.traceEnd();

        t.traceBegin("StartBlobStoreManagerService");
        mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS);
        t.traceEnd();

        t.traceBegin("AppServiceManager");
        mSystemServiceManager.startService(AppBindingService.Lifecycle.class);
        t.traceEnd();
@@ -2149,6 +2154,9 @@ public final class SystemServer {
        mSystemServiceManager.startService(APP_SEARCH_MANAGER_SERVICE_CLASS);
        t.traceEnd();

        ConcurrentUtils.waitForFutureNoInterrupt(mBlobStoreServiceStart,
                START_BLOB_STORE_SERVICE);

        // These are needed to propagate to the runnable below.
        final NetworkManagementService networkManagementF = networkManagement;
        final NetworkStatsService networkStatsF = networkStats;