mirror of https://github.com/apache/druid.git
HttpPostEmitterMonitor: don't emit maxTime and minTime if no times were recorded (#6418)
* HttpPostEmitterMonitor: don't emit maxTime and minTime if no times were recorded * Don't emit sum and count if none * Remove outdated comments
This commit is contained in:
parent
2b76d57347
commit
af9efdbedf
|
@ -21,6 +21,7 @@ package org.apache.druid.java.util.emitter.core;
|
||||||
|
|
||||||
import com.google.common.primitives.UnsignedInts;
|
import com.google.common.primitives.UnsignedInts;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -70,18 +71,34 @@ public class ConcurrentTimeCounter
|
||||||
return timeSumAndCount.getAndSet(0L);
|
return timeSumAndCount.getAndSet(0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getAndResetMaxTime()
|
/**
|
||||||
|
* Returns the max time {@link #add}ed since the previous call to this method or since the creation of this object,
|
||||||
|
* or null if no times were added.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public Integer getAndResetMaxTime()
|
||||||
{
|
{
|
||||||
long max = this.max.getAndSet(-1);
|
long max = this.max.getAndSet(-1);
|
||||||
// If max < 0, means no times added yet, then return 0
|
if (max >= 0) {
|
||||||
return max >= 0 ? (int) max : 0;
|
return (int) max;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getAndResetMinTime()
|
/**
|
||||||
|
* Returns the min time {@link #add}ed since the previous call to this method or since the creation of this object,
|
||||||
|
* or null if no times were added.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public Integer getAndResetMinTime()
|
||||||
{
|
{
|
||||||
long min = this.min.getAndSet(-1);
|
long min = this.min.getAndSet(-1);
|
||||||
// If min < 0, means no times added yet, then return 0
|
if (min >= 0) {
|
||||||
return min >= 0 ? (int) min : 0;
|
return (int) min;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int timeSum(long timeSumAndCount)
|
public static int timeSum(long timeSumAndCount)
|
||||||
|
|
|
@ -75,10 +75,20 @@ public class HttpPostEmitterMonitor extends FeedDefiningMonitor
|
||||||
private void emitTimeCounterMetrics(ServiceEmitter emitter, ConcurrentTimeCounter timeCounter, String metricNameBase)
|
private void emitTimeCounterMetrics(ServiceEmitter emitter, ConcurrentTimeCounter timeCounter, String metricNameBase)
|
||||||
{
|
{
|
||||||
long timeSumAndCount = timeCounter.getTimeSumAndCountAndReset();
|
long timeSumAndCount = timeCounter.getTimeSumAndCountAndReset();
|
||||||
emitter.emit(builder.build(metricNameBase + "timeMsSum", ConcurrentTimeCounter.timeSum(timeSumAndCount)));
|
int timeSum = ConcurrentTimeCounter.timeSum(timeSumAndCount);
|
||||||
emitter.emit(builder.build(metricNameBase + "count", ConcurrentTimeCounter.count(timeSumAndCount)));
|
int count = ConcurrentTimeCounter.count(timeSumAndCount);
|
||||||
emitter.emit(builder.build(metricNameBase + "maxTimeMs", timeCounter.getAndResetMaxTime()));
|
if (count != 0) {
|
||||||
emitter.emit(builder.build(metricNameBase + "minTimeMs", timeCounter.getAndResetMinTime()));
|
emitter.emit(builder.build(metricNameBase + "timeMsSum", timeSum));
|
||||||
|
emitter.emit(builder.build(metricNameBase + "count", count));
|
||||||
|
}
|
||||||
|
Integer maxTime = timeCounter.getAndResetMaxTime();
|
||||||
|
if (maxTime != null) {
|
||||||
|
emitter.emit(builder.build(metricNameBase + "maxTimeMs", maxTime));
|
||||||
|
}
|
||||||
|
Integer minTime = timeCounter.getAndResetMinTime();
|
||||||
|
if (minTime != null) {
|
||||||
|
emitter.emit(builder.build(metricNameBase + "minTimeMs", minTime));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue