Skip to content
Snippets Groups Projects
Commit 8c895e48 authored by Juan Ignacio Ubeira's avatar Juan Ignacio Ubeira
Browse files

Fix to avoid logging the same error multiple times for NtpTimeProvider.

parent c746aed1
Branches
Tags
No related merge requests found
......@@ -44,7 +44,7 @@ public class NtpTimeProvider implements TimeProvider {
private static final boolean DEBUG = false;
private static final Log log = LogFactory.getLog(NtpTimeProvider.class);
private static final int SAMPLE_SIZE = 11;
private int sampleSize = 11;
private final InetAddress host;
private final ScheduledExecutorService scheduledExecutorService;
......@@ -76,11 +76,11 @@ public class NtpTimeProvider implements TimeProvider {
public void updateTime() throws IOException {
List<Long> offsets = Lists.newArrayList();
int failures = 0;
for (int i = 0; i < SAMPLE_SIZE; i++) {
for (int i = 0; i < sampleSize; i++) {
try {
offsets.add(computeOffset());
} catch (IOException e) {
if ( ++failures > SAMPLE_SIZE/2 ) {
if (++failures > sampleSize / 2) {
throw e;
}
}
......@@ -97,7 +97,9 @@ public class NtpTimeProvider implements TimeProvider {
try {
time = ntpClient.getTime(host);
} catch (IOException e) {
if (DEBUG) {
log.error("Failed to read time from NTP server: " + host.getHostName(), e);
}
throw e;
}
time.computeDetails();
......@@ -147,4 +149,14 @@ public class NtpTimeProvider implements TimeProvider {
Time currentTime = wallTimeProvider.getCurrentTime();
return currentTime.add(Duration.fromMillis(offset));
}
/**
* Sets how many samples will be taken from the NTP server
* when calling {@link #updateTime()}.
* @param sampleSize Number of samples to take. It has to be > 0.
*/
public void setUpdateTimeSampleSize(int sampleSize) {
Preconditions.checkArgument(sampleSize > 0);
this.sampleSize = sampleSize;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment