From fe7af3e5d24aa18dc8af11d469bd3f2972b92323 Mon Sep 17 00:00:00 2001 From: Kanyinsola Date: Fri, 25 Feb 2022 14:54:33 +0000 Subject: [PATCH] Fix bug in NetworkTimeUpdateService Reset try again counter after a successful NTP refresh Reset alarm to run at exactly mPollingIntervalMs after the last NTP update. Bug: b/217357882 Test: Existing unit tests still pass. Change-Id: Ibee93ab305f5bcaa149007c15d12c583227678b9 --- .../java/com/android/server/NetworkTimeUpdateService.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/NetworkTimeUpdateService.java b/services/core/java/com/android/server/NetworkTimeUpdateService.java index a0f239d439271..fcde533fe05c5 100644 --- a/services/core/java/com/android/server/NetworkTimeUpdateService.java +++ b/services/core/java/com/android/server/NetworkTimeUpdateService.java @@ -171,7 +171,9 @@ public class NetworkTimeUpdateService extends Binder { >= mPollingIntervalMs) { if (DBG) Log.d(TAG, "Stale NTP fix; forcing refresh"); boolean isSuccessful = mTime.forceRefresh(); - if (!isSuccessful) { + if (isSuccessful) { + mTryAgainCounter = 0; + } else { String logMsg = "forceRefresh() returned false: cachedNtpResult=" + cachedNtpResult + ", currentElapsedRealtimeMillis=" + currentElapsedRealtimeMillis; @@ -188,7 +190,8 @@ public class NetworkTimeUpdateService extends Binder { && cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis) < mPollingIntervalMs) { // Obtained fresh fix; schedule next normal update - resetAlarm(mPollingIntervalMs); + resetAlarm(mPollingIntervalMs + - cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis)); // Suggest the time to the time detector. It may choose use it to set the system clock. TimestampedValue timeSignal = new TimestampedValue<>(