From 82dc85af6482b950ab7b7a6f48e1edc98638947b Mon Sep 17 00:00:00 2001 From: Martijn Coenen Date: Mon, 28 Jan 2019 13:12:28 +0100 Subject: [PATCH] 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 --- core/java/android/os/ZygoteProcess.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java index 9e47179e9152d..e94ad2b8989e0 100644 --- a/core/java/android/os/ZygoteProcess.java +++ b/core/java/android/os/ZygoteProcess.java @@ -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) { } }