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
This commit is contained in:
@@ -437,7 +437,6 @@ public final class SystemServer implements Dumpable {
|
|||||||
private static final String SYSPROP_START_UPTIME = "sys.system_server.start_uptime";
|
private static final String SYSPROP_START_UPTIME = "sys.system_server.start_uptime";
|
||||||
|
|
||||||
private Future<?> mZygotePreload;
|
private Future<?> mZygotePreload;
|
||||||
private Future<?> mBlobStoreServiceStart;
|
|
||||||
|
|
||||||
private final SystemServerDumper mDumper = new SystemServerDumper();
|
private final SystemServerDumper mDumper = new SystemServerDumper();
|
||||||
|
|
||||||
@@ -2255,12 +2254,9 @@ public final class SystemServer implements Dumpable {
|
|||||||
t.traceEnd();
|
t.traceEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
mBlobStoreServiceStart = SystemServerInitThreadPool.submit(() -> {
|
t.traceBegin(START_BLOB_STORE_SERVICE);
|
||||||
final TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog();
|
|
||||||
traceLog.traceBegin(START_BLOB_STORE_SERVICE);
|
|
||||||
mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS);
|
mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS);
|
||||||
traceLog.traceEnd();
|
t.traceEnd();
|
||||||
}, START_BLOB_STORE_SERVICE);
|
|
||||||
|
|
||||||
// Dreams (interactive idle-time views, a/k/a screen savers, and doze mode)
|
// Dreams (interactive idle-time views, a/k/a screen savers, and doze mode)
|
||||||
t.traceBegin("StartDreamManager");
|
t.traceBegin("StartDreamManager");
|
||||||
@@ -2659,9 +2655,6 @@ public final class SystemServer implements Dumpable {
|
|||||||
mSystemServiceManager.startService(APP_COMPAT_OVERRIDES_SERVICE_CLASS);
|
mSystemServiceManager.startService(APP_COMPAT_OVERRIDES_SERVICE_CLASS);
|
||||||
t.traceEnd();
|
t.traceEnd();
|
||||||
|
|
||||||
ConcurrentUtils.waitForFutureNoInterrupt(mBlobStoreServiceStart,
|
|
||||||
START_BLOB_STORE_SERVICE);
|
|
||||||
|
|
||||||
// These are needed to propagate to the runnable below.
|
// These are needed to propagate to the runnable below.
|
||||||
final NetworkManagementService networkManagementF = networkManagement;
|
final NetworkManagementService networkManagementF = networkManagement;
|
||||||
final NetworkStatsService networkStatsF = networkStats;
|
final NetworkStatsService networkStatsF = networkStats;
|
||||||
|
|||||||
Reference in New Issue
Block a user