Merge "Fix StorageManagerService linkToDeath more than one time when vold/storaged died."

This commit is contained in:
Jeff Sharkey
2019-08-07 16:02:59 +00:00
committed by Gerrit Code Review

View File

@@ -1452,10 +1452,11 @@ class StorageManagerService extends IStorageManager.Stub
}
private void start() {
connect();
connectStoraged();
connectVold();
}
private void connect() {
private void connectStoraged() {
IBinder binder = ServiceManager.getService("storaged");
if (binder != null) {
try {
@@ -1464,7 +1465,7 @@ class StorageManagerService extends IStorageManager.Stub
public void binderDied() {
Slog.w(TAG, "storaged died; reconnecting");
mStoraged = null;
connect();
connectStoraged();
}
}, 0);
} catch (RemoteException e) {
@@ -1478,7 +1479,17 @@ class StorageManagerService extends IStorageManager.Stub
Slog.w(TAG, "storaged not found; trying again");
}
binder = ServiceManager.getService("vold");
if (mStoraged == null) {
BackgroundThread.getHandler().postDelayed(() -> {
connectStoraged();
}, DateUtils.SECOND_IN_MILLIS);
} else {
onDaemonConnected();
}
}
private void connectVold() {
IBinder binder = ServiceManager.getService("vold");
if (binder != null) {
try {
binder.linkToDeath(new DeathRecipient() {
@@ -1486,7 +1497,7 @@ class StorageManagerService extends IStorageManager.Stub
public void binderDied() {
Slog.w(TAG, "vold died; reconnecting");
mVold = null;
connect();
connectVold();
}
}, 0);
} catch (RemoteException e) {
@@ -1506,9 +1517,9 @@ class StorageManagerService extends IStorageManager.Stub
Slog.w(TAG, "vold not found; trying again");
}
if (mStoraged == null || mVold == null) {
if (mVold == null) {
BackgroundThread.getHandler().postDelayed(() -> {
connect();
connectVold();
}, DateUtils.SECOND_IN_MILLIS);
} else {
onDaemonConnected();