Skip to content

Commit 17c7509

Browse files
authored
Support histogram precision (#407)
* update proto version * support parsing precision in incoming messages * record precision to kairosdb * checkstyle and weird spacing
1 parent 537d9a6 commit 17c7509

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136
<metrics.client.incubator.version>0.13.0</metrics.client.incubator.version>
137137
<metrics.jvm.extra.version>0.13.1</metrics.jvm.extra.version>
138138
<metrics.http.extra.version>0.13.1</metrics.http.extra.version>
139-
<metrics.aggregator.protocol.version>1.1.0</metrics.aggregator.protocol.version>
139+
<metrics.aggregator.protocol.version>1.2.1</metrics.aggregator.protocol.version>
140140
<mockito.version>5.13.0</mockito.version>
141141
<netty.version>4.0.56.Final</netty.version>
142142
<netty.all.version>4.0.21.Final</netty.all.version>

src/main/java/com/arpnetworking/clusteraggregator/models/CombinedMetricData.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,13 @@ public static Builder fromStatisticSetRecord(final Messages.StatisticSetRecord r
303303
if (statistic instanceof HistogramStatistic) {
304304
final Messages.SparseHistogramSupportingData supportingData = deserialzeSupportingData(statisticRecord);
305305

306-
final HistogramStatistic.Histogram histogram = new HistogramStatistic.Histogram();
306+
final HistogramStatistic.Histogram histogram;
307+
if (supportingData.getPrecision() == 0) {
308+
histogram = new HistogramStatistic.Histogram();
309+
} else {
310+
// Subtract 1 from the precision to get the actual precision since 0 means default precision
311+
histogram = new HistogramStatistic.Histogram(supportingData.getPrecision() - 1);
312+
}
307313
for (final Messages.SparseHistogramEntry entry : supportingData.getEntriesList()) {
308314
final double bucket = entry.getBucket();
309315
final long count = entry.getCount();

src/main/java/com/arpnetworking/tsdcore/sinks/KairosDbSink.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -314,16 +314,17 @@ public void serializeDatum(
314314
}
315315
}
316316

317-
public void serializeHistogram(
318-
final List<SerializedDatum> completeChunks,
319-
final ByteBuffer currentChunk,
320-
final ByteArrayOutputStream chunkStream,
321-
final AggregatedData data,
322-
final KairosHistogramAdditionalData additionalData,
323-
final LongAdder currentChunkPopulationSize) {
324-
final FQDSN fqdsn = data.getFQDSN();
325-
326-
try {
317+
// CHECKSTYLE.OFF: ExecutableStatementCount - There are a lot of fields, we just need to serialize them
318+
public void serializeHistogram(
319+
final List<SerializedDatum> completeChunks,
320+
final ByteBuffer currentChunk,
321+
final ByteArrayOutputStream chunkStream,
322+
final AggregatedData data,
323+
final KairosHistogramAdditionalData additionalData,
324+
final LongAdder currentChunkPopulationSize) {
325+
final FQDSN fqdsn = data.getFQDSN();
326+
327+
try {
327328
final HistogramStatistic.HistogramSnapshot bins = ((HistogramStatistic.HistogramSupportingData) data.getSupportingData())
328329
.getHistogramSnapshot();
329330
final JsonGenerator chunkGenerator = OBJECT_MAPPER.getFactory().createGenerator(chunkStream, JsonEncoding.UTF8);
@@ -338,6 +339,7 @@ public void serializeHistogram(
338339
chunkGenerator.writeNumberField("max", additionalData.getMax());
339340
chunkGenerator.writeNumberField("mean", additionalData.getMean());
340341
chunkGenerator.writeNumberField("sum", additionalData.getSum());
342+
chunkGenerator.writeNumberField("precision", bins.getPrecision());
341343
chunkGenerator.writeObjectFieldStart("bins");
342344
for (Double2LongMap.Entry bin : bins.getValues()) {
343345
chunkGenerator.writeNumberField(String.valueOf(bin.getDoubleKey()), bin.getLongValue());
@@ -373,6 +375,7 @@ public void serializeHistogram(
373375
.log();
374376
}
375377
}
378+
// CHECKSTYLE.ON: ExecutableStatementCount
376379

377380
public void serializeCondition(
378381
final List<SerializedDatum> completeChunks,

0 commit comments

Comments
 (0)