Speed up Zygote connection retry.

For the app zygote, the time to connect to the Zygote is in the critical
path for the (first) isolated service start. Speed up the retry.

Bug: 111434506
Test: atest CtsApptestCases:ServiceTest
Change-Id: I634a7b45e3065744e3d15287453327eca763660f
This commit is contained in:
Martijn Coenen
2019-01-28 13:12:28 +01:00
parent 6ab2e4a91e
commit 82dc85af64

View File

@@ -73,6 +73,19 @@ public class ZygoteProcess {
*/
public static final String ZYGOTE_SECONDARY_SOCKET_NAME = "zygote_secondary";
/**
* @hide for internal use only.
*/
public static final int ZYGOTE_CONNECT_TIMEOUT_MS = 20000;
/**
* @hide for internal use only.
*
* Use a relatively short delay, because for app zygote, this is in the critical path of
* service launch.
*/
public static final int ZYGOTE_CONNECT_RETRY_DELAY_MS = 50;
/**
* @hide for internal use only
*/
@@ -933,7 +946,8 @@ public class ZygoteProcess {
* @param address The name of the socket to connect to.
*/
public static void waitForConnectionToZygote(LocalSocketAddress zygoteSocketAddress) {
for (int n = 20; n >= 0; n--) {
int numRetries = ZYGOTE_CONNECT_TIMEOUT_MS / ZYGOTE_CONNECT_RETRY_DELAY_MS;
for (int n = numRetries; n >= 0; n--) {
try {
final ZygoteState zs =
ZygoteState.connect(zygoteSocketAddress, null);
@@ -945,7 +959,7 @@ public class ZygoteProcess {
}
try {
Thread.sleep(1000);
Thread.sleep(ZYGOTE_CONNECT_RETRY_DELAY_MS);
} catch (InterruptedException ie) {
}
}