HADOOP-14892. MetricsSystemImpl should use Time.monotonicNow for measuring durations. Contributed by Chetna Chaudhari.

This commit is contained in:
Akira Ajisaka 2017-09-26 01:47:02 +09:00
parent 02e2a9b115
commit 3a10367a17
No known key found for this signature in database
GPG Key ID: C1EDBB9CA400FD50

View File

@ -415,10 +415,10 @@ public synchronized MetricsBuffer sampleMetrics() {
private void snapshotMetrics(MetricsSourceAdapter sa,
MetricsBufferBuilder bufferBuilder) {
long startTime = Time.now();
long startTime = Time.monotonicNow();
bufferBuilder.add(sa.name(), sa.getMetrics(collector, true));
collector.clear();
snapshotStat.add(Time.now() - startTime);
snapshotStat.add(Time.monotonicNow() - startTime);
LOG.debug("Snapshotted source "+ sa.name());
}
@ -431,7 +431,7 @@ private void snapshotMetrics(MetricsSourceAdapter sa,
synchronized void publishMetrics(MetricsBuffer buffer, boolean immediate) {
int dropped = 0;
for (MetricsSinkAdapter sa : sinks.values()) {
long startTime = Time.now();
long startTime = Time.monotonicNow();
boolean result;
if (immediate) {
result = sa.putMetricsImmediate(buffer);
@ -439,7 +439,7 @@ synchronized void publishMetrics(MetricsBuffer buffer, boolean immediate) {
result = sa.putMetrics(buffer, logicalTime);
}
dropped += result ? 0 : 1;
publishStat.add(Time.now() - startTime);
publishStat.add(Time.monotonicNow() - startTime);
}
droppedPubAll.incr(dropped);
}