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

Commit 1723e2fe authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Start blob store service synchronously.

Starting the service asynchronously is resulting in a
race condition when accessing a shared data structure.
We could add a lock to guard this data structure but
this is resulting in a slightly worse performance than
starting the service synchronously.

Bug: 194428627
Bug: 179687249
Test: treehugger verification
Change-Id: Ib4d610e8a221f94a3dcc8475371b4a05e5582149
Merged-In: Ib4d610e8a221f94a3dcc8475371b4a05e5582149
(cherry picked from commit 9df4ac60)
parent 6ba02399
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -435,7 +435,6 @@ public final class SystemServer implements Dumpable {
    private static final String SYSPROP_START_UPTIME = "sys.system_server.start_uptime";

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

    private final SystemServerDumper mDumper = new SystemServerDumper();

@@ -2250,12 +2249,9 @@ public final class SystemServer implements Dumpable {
                t.traceEnd();
            }

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

            // Dreams (interactive idle-time views, a/k/a screen savers, and doze mode)
            t.traceBegin("StartDreamManager");
@@ -2650,9 +2646,6 @@ public final class SystemServer implements Dumpable {
        mSystemServiceManager.startService(MEDIA_COMMUNICATION_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;