Skip to content

Commit e2aacd5

Browse files
committed
Refactor escaped snapshots creation
Signed-off-by: Federico Torres <[email protected]>
1 parent e918ca3 commit e2aacd5

File tree

1 file changed

+90
-87
lines changed

1 file changed

+90
-87
lines changed

prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java

Lines changed: 90 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -420,75 +420,93 @@ public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingSche
420420
}
421421

422422
Labels outLabels = outLabelsBuilder.build();
423-
DataPointSnapshot outDataPointSnapshot = null;
424-
425-
if (v instanceof CounterSnapshot) {
426-
outDataPointSnapshot = CounterSnapshot.CounterDataPointSnapshot.builder()
427-
.value(((CounterSnapshot.CounterDataPointSnapshot) d).getValue())
428-
.exemplar(((CounterSnapshot.CounterDataPointSnapshot) d).getExemplar())
429-
.labels(outLabels)
430-
.createdTimestampMillis(d.getCreatedTimestampMillis())
431-
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
432-
.build();
433-
} else if (v instanceof GaugeSnapshot) {
434-
outDataPointSnapshot = GaugeSnapshot.GaugeDataPointSnapshot.builder()
435-
.value(((GaugeSnapshot.GaugeDataPointSnapshot) d).getValue())
436-
.exemplar(((GaugeSnapshot.GaugeDataPointSnapshot) d).getExemplar())
437-
.labels(outLabels)
438-
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
439-
.build();
440-
} else if (v instanceof HistogramSnapshot) {
441-
outDataPointSnapshot = HistogramSnapshot.HistogramDataPointSnapshot.builder()
442-
.classicHistogramBuckets(((HistogramSnapshot.HistogramDataPointSnapshot) d).getClassicBuckets())
443-
.nativeSchema(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeSchema())
444-
.nativeZeroCount(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeZeroCount())
445-
.nativeZeroThreshold(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeZeroThreshold())
446-
.nativeBucketsForPositiveValues(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeBucketsForPositiveValues())
447-
.nativeBucketsForNegativeValues(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeBucketsForNegativeValues())
448-
.count(((HistogramSnapshot.HistogramDataPointSnapshot) d).getCount())
449-
.sum(((HistogramSnapshot.HistogramDataPointSnapshot) d).getSum())
450-
.exemplars(((HistogramSnapshot.HistogramDataPointSnapshot) d).getExemplars())
451-
.labels(outLabels)
452-
.createdTimestampMillis(d.getCreatedTimestampMillis())
453-
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
454-
.build();
455-
} else if (v instanceof SummarySnapshot) {
456-
outDataPointSnapshot = SummarySnapshot.SummaryDataPointSnapshot.builder()
457-
.quantiles(((SummarySnapshot.SummaryDataPointSnapshot) d).getQuantiles())
458-
.count(((SummarySnapshot.SummaryDataPointSnapshot) d).getCount())
459-
.sum(((SummarySnapshot.SummaryDataPointSnapshot) d).getSum())
460-
.exemplars(((SummarySnapshot.SummaryDataPointSnapshot) d).getExemplars())
461-
.labels(outLabels)
462-
.createdTimestampMillis(d.getCreatedTimestampMillis())
463-
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
464-
.build();
465-
} else if (v instanceof InfoSnapshot) {
466-
outDataPointSnapshot = InfoSnapshot.InfoDataPointSnapshot.builder()
467-
.labels(outLabels)
468-
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
469-
.build();
470-
} else if (v instanceof StateSetSnapshot) {
471-
StateSetSnapshot.StateSetDataPointSnapshot.Builder builder = StateSetSnapshot.StateSetDataPointSnapshot.builder()
472-
.labels(outLabels)
473-
.scrapeTimestampMillis(d.getScrapeTimestampMillis());
474-
for (StateSetSnapshot.State state : ((StateSetSnapshot.StateSetDataPointSnapshot) d)) {
475-
builder.state(state.getName(), state.isTrue());
476-
}
477-
outDataPointSnapshot = builder.build();
478-
} else if (v instanceof UnknownSnapshot) {
479-
outDataPointSnapshot = UnknownSnapshot.UnknownDataPointSnapshot.builder()
480-
.labels(outLabels)
481-
.value(((UnknownSnapshot.UnknownDataPointSnapshot) d).getValue())
482-
.exemplar(((UnknownSnapshot.UnknownDataPointSnapshot) d).getExemplar())
483-
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
484-
.build();
485-
}
486-
423+
DataPointSnapshot outDataPointSnapshot = createEscapedDataPointSnapshot(v, d, outLabels);
487424
outDataPoints.add(outDataPointSnapshot);
488425
}
489426

490-
MetricSnapshot out;
427+
return createEscapedMetricSnapshot(v, outName, outDataPoints);
428+
}
429+
430+
static boolean metricNeedsEscaping(DataPointSnapshot d) {
431+
Labels labels = d.getLabels();
432+
for (Label l : labels) {
433+
if (l.getName().equals(METRIC_NAME_LABEL) && !isValidLegacyMetricName(l.getValue())) {
434+
return true;
435+
}
436+
if (!isValidLegacyMetricName(l.getName())) {
437+
return true;
438+
}
439+
}
440+
return false;
441+
}
442+
443+
private static DataPointSnapshot createEscapedDataPointSnapshot(MetricSnapshot v, DataPointSnapshot d, Labels outLabels) {
444+
if (v instanceof CounterSnapshot) {
445+
return CounterSnapshot.CounterDataPointSnapshot.builder()
446+
.value(((CounterSnapshot.CounterDataPointSnapshot) d).getValue())
447+
.exemplar(((CounterSnapshot.CounterDataPointSnapshot) d).getExemplar())
448+
.labels(outLabels)
449+
.createdTimestampMillis(d.getCreatedTimestampMillis())
450+
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
451+
.build();
452+
} else if (v instanceof GaugeSnapshot) {
453+
return GaugeSnapshot.GaugeDataPointSnapshot.builder()
454+
.value(((GaugeSnapshot.GaugeDataPointSnapshot) d).getValue())
455+
.exemplar(((GaugeSnapshot.GaugeDataPointSnapshot) d).getExemplar())
456+
.labels(outLabels)
457+
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
458+
.build();
459+
} else if (v instanceof HistogramSnapshot) {
460+
return HistogramSnapshot.HistogramDataPointSnapshot.builder()
461+
.classicHistogramBuckets(((HistogramSnapshot.HistogramDataPointSnapshot) d).getClassicBuckets())
462+
.nativeSchema(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeSchema())
463+
.nativeZeroCount(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeZeroCount())
464+
.nativeZeroThreshold(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeZeroThreshold())
465+
.nativeBucketsForPositiveValues(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeBucketsForPositiveValues())
466+
.nativeBucketsForNegativeValues(((HistogramSnapshot.HistogramDataPointSnapshot) d).getNativeBucketsForNegativeValues())
467+
.count(((HistogramSnapshot.HistogramDataPointSnapshot) d).getCount())
468+
.sum(((HistogramSnapshot.HistogramDataPointSnapshot) d).getSum())
469+
.exemplars(((HistogramSnapshot.HistogramDataPointSnapshot) d).getExemplars())
470+
.labels(outLabels)
471+
.createdTimestampMillis(d.getCreatedTimestampMillis())
472+
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
473+
.build();
474+
} else if (v instanceof SummarySnapshot) {
475+
return SummarySnapshot.SummaryDataPointSnapshot.builder()
476+
.quantiles(((SummarySnapshot.SummaryDataPointSnapshot) d).getQuantiles())
477+
.count(((SummarySnapshot.SummaryDataPointSnapshot) d).getCount())
478+
.sum(((SummarySnapshot.SummaryDataPointSnapshot) d).getSum())
479+
.exemplars(((SummarySnapshot.SummaryDataPointSnapshot) d).getExemplars())
480+
.labels(outLabels)
481+
.createdTimestampMillis(d.getCreatedTimestampMillis())
482+
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
483+
.build();
484+
} else if (v instanceof InfoSnapshot) {
485+
return InfoSnapshot.InfoDataPointSnapshot.builder()
486+
.labels(outLabels)
487+
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
488+
.build();
489+
} else if (v instanceof StateSetSnapshot) {
490+
StateSetSnapshot.StateSetDataPointSnapshot.Builder builder = StateSetSnapshot.StateSetDataPointSnapshot.builder()
491+
.labels(outLabels)
492+
.scrapeTimestampMillis(d.getScrapeTimestampMillis());
493+
for (StateSetSnapshot.State state : ((StateSetSnapshot.StateSetDataPointSnapshot) d)) {
494+
builder.state(state.getName(), state.isTrue());
495+
}
496+
return builder.build();
497+
} else if (v instanceof UnknownSnapshot) {
498+
return UnknownSnapshot.UnknownDataPointSnapshot.builder()
499+
.labels(outLabels)
500+
.value(((UnknownSnapshot.UnknownDataPointSnapshot) d).getValue())
501+
.exemplar(((UnknownSnapshot.UnknownDataPointSnapshot) d).getExemplar())
502+
.scrapeTimestampMillis(d.getScrapeTimestampMillis())
503+
.build();
504+
} else {
505+
throw new IllegalArgumentException("Unknown MetricSnapshot type: " + v.getClass());
506+
}
507+
}
491508

509+
private static MetricSnapshot createEscapedMetricSnapshot(MetricSnapshot v, String outName, List<DataPointSnapshot> outDataPoints) {
492510
if (v instanceof CounterSnapshot) {
493511
CounterSnapshot.Builder builder = CounterSnapshot.builder()
494512
.name(outName)
@@ -497,7 +515,7 @@ public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingSche
497515
for (DataPointSnapshot d : outDataPoints) {
498516
builder.dataPoint((CounterSnapshot.CounterDataPointSnapshot) d);
499517
}
500-
out = builder.build();
518+
return builder.build();
501519
} else if (v instanceof GaugeSnapshot) {
502520
GaugeSnapshot.Builder builder = GaugeSnapshot.builder()
503521
.name(outName)
@@ -506,7 +524,7 @@ public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingSche
506524
for (DataPointSnapshot d : outDataPoints) {
507525
builder.dataPoint((GaugeSnapshot.GaugeDataPointSnapshot) d);
508526
}
509-
out = builder.build();
527+
return builder.build();
510528
} else if (v instanceof HistogramSnapshot) {
511529
HistogramSnapshot.Builder builder = HistogramSnapshot.builder()
512530
.name(outName)
@@ -516,7 +534,7 @@ public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingSche
516534
for (DataPointSnapshot d : outDataPoints) {
517535
builder.dataPoint((HistogramSnapshot.HistogramDataPointSnapshot) d);
518536
}
519-
out = builder.build();
537+
return builder.build();
520538
} else if (v instanceof SummarySnapshot) {
521539
SummarySnapshot.Builder builder = SummarySnapshot.builder()
522540
.name(outName)
@@ -525,23 +543,23 @@ public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingSche
525543
for (DataPointSnapshot d : outDataPoints) {
526544
builder.dataPoint((SummarySnapshot.SummaryDataPointSnapshot) d);
527545
}
528-
out = builder.build();
546+
return builder.build();
529547
} else if (v instanceof InfoSnapshot) {
530548
InfoSnapshot.Builder builder = InfoSnapshot.builder()
531549
.name(outName)
532550
.help(v.getMetadata().getHelp());
533551
for (DataPointSnapshot d : outDataPoints) {
534552
builder.dataPoint((InfoSnapshot.InfoDataPointSnapshot) d);
535553
}
536-
out = builder.build();
554+
return builder.build();
537555
} else if (v instanceof StateSetSnapshot) {
538556
StateSetSnapshot.Builder builder = StateSetSnapshot.builder()
539557
.name(outName)
540558
.help(v.getMetadata().getHelp());
541559
for (DataPointSnapshot d : outDataPoints) {
542560
builder.dataPoint((StateSetSnapshot.StateSetDataPointSnapshot) d);
543561
}
544-
out = builder.build();
562+
return builder.build();
545563
} else if (v instanceof UnknownSnapshot) {
546564
UnknownSnapshot.Builder builder = UnknownSnapshot.builder()
547565
.name(outName)
@@ -550,25 +568,10 @@ public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingSche
550568
for (DataPointSnapshot d : outDataPoints) {
551569
builder.dataPoint((UnknownSnapshot.UnknownDataPointSnapshot) d);
552570
}
553-
out = builder.build();
571+
return builder.build();
554572
} else {
555573
throw new IllegalArgumentException("Unknown MetricSnapshot type: " + v.getClass());
556574
}
557-
558-
return out;
559-
}
560-
561-
static boolean metricNeedsEscaping(DataPointSnapshot d) {
562-
Labels labels = d.getLabels();
563-
for (Label l : labels) {
564-
if (l.getName().equals(METRIC_NAME_LABEL) && !isValidLegacyMetricName(l.getValue())) {
565-
return true;
566-
}
567-
if (!isValidLegacyMetricName(l.getName())) {
568-
return true;
569-
}
570-
}
571-
return false;
572575
}
573576

574577
/**

0 commit comments

Comments
 (0)