Use the correct time functions for tracking service startup

When checking for the Idmap service startup timeout we need
to ignore the time spent in sleep, and use the correct timing
API - SystemClock.uptimeMillis()

Bug: 258771796
Test: build + boot + overlay install
Change-Id: Ib35eaa5953092177f0d043ffdfffce106ebba0e4
This commit is contained in:
Yurii Zubrytskyi
2023-01-18 20:16:55 -08:00
parent 9ac6a634e8
commit 284c1715a7

View File

@@ -274,20 +274,16 @@ class IdmapDaemon {
}
}
final long endMillis = SystemClock.elapsedRealtime() + SERVICE_CONNECT_TIMEOUT_MS;
while (SystemClock.elapsedRealtime() <= endMillis) {
final long endMillis = SystemClock.uptimeMillis() + SERVICE_CONNECT_TIMEOUT_MS;
do {
final IBinder binder = ServiceManager.getService(IDMAP_SERVICE);
if (binder != null) {
binder.linkToDeath(
() -> Slog.w(TAG, String.format("service '%s' died", IDMAP_SERVICE)), 0);
return binder;
}
try {
Thread.sleep(SERVICE_CONNECT_INTERVAL_SLEEP_MS);
} catch (InterruptedException ignored) {
}
}
SystemClock.sleep(SERVICE_CONNECT_INTERVAL_SLEEP_MS);
} while (SystemClock.uptimeMillis() <= endMillis);
throw new TimeoutException(
String.format("Failed to connect to '%s' in %d milliseconds", IDMAP_SERVICE,