Merge "Add local logs to NetworkTimeUpdateService" am: 6bda795c2b
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1998851 Change-Id: Iab9e06ca91d50bc156463fe11019c76950738173
This commit is contained in:
committed by
Automerger Merge Worker
commit
7e16f6e837
@@ -81,7 +81,16 @@ public class NtpTrustedTime implements TrustedTime {
|
|||||||
|
|
||||||
/** Calculates and returns the age of this result. */
|
/** Calculates and returns the age of this result. */
|
||||||
public long getAgeMillis() {
|
public long getAgeMillis() {
|
||||||
return SystemClock.elapsedRealtime() - mElapsedRealtimeMillis;
|
return getAgeMillis(SystemClock.elapsedRealtime());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates and returns the age of this result relative to currentElapsedRealtimeMillis.
|
||||||
|
*
|
||||||
|
* @param currentElapsedRealtimeMillis - reference elapsed real time
|
||||||
|
*/
|
||||||
|
public long getAgeMillis(long currentElapsedRealtimeMillis) {
|
||||||
|
return currentElapsedRealtimeMillis - mElapsedRealtimeMillis;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.server;
|
package com.android.server;
|
||||||
|
|
||||||
|
import android.annotation.NonNull;
|
||||||
import android.app.AlarmManager;
|
import android.app.AlarmManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.app.timedetector.NetworkTimeSuggestion;
|
import android.app.timedetector.NetworkTimeSuggestion;
|
||||||
@@ -38,6 +39,7 @@ import android.os.PowerManager;
|
|||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.os.TimestampedValue;
|
import android.os.TimestampedValue;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.util.LocalLog;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.NtpTrustedTime;
|
import android.util.NtpTrustedTime;
|
||||||
import android.util.TimeUtils;
|
import android.util.TimeUtils;
|
||||||
@@ -95,6 +97,13 @@ public class NetworkTimeUpdateService extends Binder {
|
|||||||
// connection to happen.
|
// connection to happen.
|
||||||
private int mTryAgainCounter;
|
private int mTryAgainCounter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A log that records the decisions to fetch a network time update.
|
||||||
|
* This is logged in bug reports to assist with debugging issues with network time suggestions.
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
private final LocalLog mLocalLog = new LocalLog(30, false /* useLocalTimestamps */);
|
||||||
|
|
||||||
public NetworkTimeUpdateService(Context context) {
|
public NetworkTimeUpdateService(Context context) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mTime = NtpTrustedTime.getInstance(context);
|
mTime = NtpTrustedTime.getInstance(context);
|
||||||
@@ -155,15 +164,29 @@ public class NetworkTimeUpdateService extends Binder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onPollNetworkTimeUnderWakeLock(int event) {
|
private void onPollNetworkTimeUnderWakeLock(int event) {
|
||||||
|
long currentElapsedRealtimeMillis = SystemClock.elapsedRealtime();
|
||||||
// Force an NTP fix when outdated
|
// Force an NTP fix when outdated
|
||||||
NtpTrustedTime.TimeResult cachedNtpResult = mTime.getCachedTimeResult();
|
NtpTrustedTime.TimeResult cachedNtpResult = mTime.getCachedTimeResult();
|
||||||
if (cachedNtpResult == null || cachedNtpResult.getAgeMillis() >= mPollingIntervalMs) {
|
if (cachedNtpResult == null || cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis)
|
||||||
|
>= mPollingIntervalMs) {
|
||||||
if (DBG) Log.d(TAG, "Stale NTP fix; forcing refresh");
|
if (DBG) Log.d(TAG, "Stale NTP fix; forcing refresh");
|
||||||
mTime.forceRefresh();
|
boolean isSuccessful = mTime.forceRefresh();
|
||||||
|
if (!isSuccessful) {
|
||||||
|
String logMsg = "forceRefresh() returned false: cachedNtpResult=" + cachedNtpResult
|
||||||
|
+ ", currentElapsedRealtimeMillis=" + currentElapsedRealtimeMillis;
|
||||||
|
|
||||||
|
if (DBG) {
|
||||||
|
Log.d(TAG, logMsg);
|
||||||
|
}
|
||||||
|
mLocalLog.log(logMsg);
|
||||||
|
}
|
||||||
|
|
||||||
cachedNtpResult = mTime.getCachedTimeResult();
|
cachedNtpResult = mTime.getCachedTimeResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cachedNtpResult != null && cachedNtpResult.getAgeMillis() < mPollingIntervalMs) {
|
if (cachedNtpResult != null
|
||||||
|
&& cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis)
|
||||||
|
< mPollingIntervalMs) {
|
||||||
// Obtained fresh fix; schedule next normal update
|
// Obtained fresh fix; schedule next normal update
|
||||||
resetAlarm(mPollingIntervalMs);
|
resetAlarm(mPollingIntervalMs);
|
||||||
|
|
||||||
@@ -180,6 +203,11 @@ public class NetworkTimeUpdateService extends Binder {
|
|||||||
resetAlarm(mPollingIntervalShorterMs);
|
resetAlarm(mPollingIntervalShorterMs);
|
||||||
} else {
|
} else {
|
||||||
// Try much later
|
// Try much later
|
||||||
|
String logMsg = "mTryAgainTimesMax exceeded, cachedNtpResult=" + cachedNtpResult;
|
||||||
|
if (DBG) {
|
||||||
|
Log.d(TAG, logMsg);
|
||||||
|
}
|
||||||
|
mLocalLog.log(logMsg);
|
||||||
mTryAgainCounter = 0;
|
mTryAgainCounter = 0;
|
||||||
resetAlarm(mPollingIntervalMs);
|
resetAlarm(mPollingIntervalMs);
|
||||||
}
|
}
|
||||||
@@ -285,6 +313,8 @@ public class NetworkTimeUpdateService extends Binder {
|
|||||||
if (ntpResult != null) {
|
if (ntpResult != null) {
|
||||||
pw.println("NTP result age: " + ntpResult.getAgeMillis());
|
pw.println("NTP result age: " + ntpResult.getAgeMillis());
|
||||||
}
|
}
|
||||||
|
pw.println("Local logs:");
|
||||||
|
mLocalLog.dump(fd, pw, args);
|
||||||
pw.println();
|
pw.println();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user