Skip to content

Commit b6a5f28

Browse files
fstabMateusz Rzeszutek
andauthored
Avoid conflicts in Micrometer description mapping (#5452)
* Avoid conflicts in Micrometer description mapping Signed-off-by: Fabian Stäber <[email protected]> * fix formatting * Update instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/Bridging.java Co-authored-by: Mateusz Rzeszutek <[email protected]> Co-authored-by: Mateusz Rzeszutek <[email protected]>
1 parent 4a98dae commit b6a5f28

File tree

9 files changed

+34
-21
lines changed

9 files changed

+34
-21
lines changed

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/Bridging.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
final class Bridging {
1818

1919
private static final Cache<String, AttributeKey<String>> tagsCache = Cache.bounded(1024);
20+
private static final Cache<String, String> descriptionsCache = Cache.bounded(1024);
2021

2122
static Attributes tagsAsAttributes(Meter.Id id, NamingConvention namingConvention) {
2223
Iterable<Tag> tags = id.getTagsAsIterable();
@@ -36,9 +37,14 @@ static String name(Meter.Id id, NamingConvention namingConvention) {
3637
return namingConvention.name(id.getName(), id.getType(), id.getBaseUnit());
3738
}
3839

39-
static String description(Meter.Id id) {
40-
String description = id.getDescription();
41-
return description == null ? "" : description;
40+
// TODO: remove the cache usage once the SDK is able to handle different descriptions
41+
static String description(String name, Meter.Id id) {
42+
return descriptionsCache.computeIfAbsent(
43+
name,
44+
n -> {
45+
String description = id.getDescription();
46+
return description == null ? "" : description;
47+
});
4248
}
4349

4450
static String baseUnit(Meter.Id id) {

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryCounter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ final class OpenTelemetryCounter implements Counter, RemovableMeter {
3434
this.id = id;
3535

3636
this.attributes = tagsAsAttributes(id, namingConvention);
37+
String conventionName = name(id, namingConvention);
3738
this.otelCounter =
3839
otelMeter
39-
.counterBuilder(name(id, namingConvention))
40-
.setDescription(description(id))
40+
.counterBuilder(conventionName)
41+
.setDescription(description(conventionName, id))
4142
.setUnit(baseUnit(id))
4243
.ofDoubles()
4344
.build();

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryDistributionSummary.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,13 @@ final class OpenTelemetryDistributionSummary extends AbstractDistributionSummary
6262
this.otelHistogram =
6363
otelMeter
6464
.histogramBuilder(conventionName)
65-
.setDescription(description(id))
65+
.setDescription(description(conventionName, id))
6666
.setUnit(baseUnit(id))
6767
.build();
6868
this.maxHandle =
6969
asyncInstrumentRegistry.buildGauge(
7070
conventionName + ".max",
71-
description(id),
71+
description(conventionName, id),
7272
baseUnit(id),
7373
attributes,
7474
max,

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryFunctionCounter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ final class OpenTelemetryFunctionCounter<T> implements FunctionCounter, Removabl
3434
AsyncInstrumentRegistry asyncInstrumentRegistry) {
3535
this.id = id;
3636

37+
String conventionName = name(id, namingConvention);
3738
countMeasurementHandle =
3839
asyncInstrumentRegistry.buildDoubleCounter(
39-
name(id, namingConvention),
40-
description(id),
40+
conventionName,
41+
description(conventionName, id),
4142
baseUnit(id),
4243
tagsAsAttributes(id, namingConvention),
4344
obj,

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryFunctionTimer.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,22 @@ final class OpenTelemetryFunctionTimer<T> implements FunctionTimer, RemovableMet
4545
this.id = id;
4646
this.baseTimeUnit = baseTimeUnit;
4747

48-
String countMeterName = name(id, namingConvention) + ".count";
49-
String totalTimeMeterName = name(id, namingConvention) + ".sum";
48+
String conventionName = name(id, namingConvention);
5049
Attributes attributes = tagsAsAttributes(id, namingConvention);
5150

5251
countMeasurementHandle =
5352
asyncInstrumentRegistry.buildLongCounter(
54-
countMeterName, description(id), /* baseUnit = */ "1", attributes, obj, countFunction);
53+
conventionName + ".count",
54+
description(conventionName, id),
55+
/* baseUnit = */ "1",
56+
attributes,
57+
obj,
58+
countFunction);
5559

5660
totalTimeMeasurementHandle =
5761
asyncInstrumentRegistry.buildDoubleCounter(
58-
totalTimeMeterName,
59-
description(id),
62+
conventionName + ".sum",
63+
description(conventionName, id),
6064
getUnitString(baseTimeUnit),
6165
attributes,
6266
obj,

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryGauge.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ final class OpenTelemetryGauge<T> implements Gauge, RemovableMeter {
3535

3636
this.id = id;
3737

38+
String conventionName = name(id, namingConvention);
3839
gaugeMeasurementHandle =
3940
asyncInstrumentRegistry.buildGauge(
40-
name(id, namingConvention),
41-
description(id),
41+
conventionName,
42+
description(conventionName, id),
4243
baseUnit(id),
4344
tagsAsAttributes(id, namingConvention),
4445
obj,

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryLongTaskTimer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ final class OpenTelemetryLongTaskTimer extends DefaultLongTaskTimer implements R
4343
this.activeTasksHandle =
4444
asyncInstrumentRegistry.buildUpDownLongCounter(
4545
conventionName + ".active",
46-
description(id),
46+
description(conventionName, id),
4747
"tasks",
4848
attributes,
4949
this,
5050
DefaultLongTaskTimer::activeTasks);
5151
this.durationHandle =
5252
asyncInstrumentRegistry.buildUpDownDoubleCounter(
5353
conventionName + ".duration",
54-
description(id),
54+
description(conventionName, id),
5555
getUnitString(baseTimeUnit),
5656
attributes,
5757
this,

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryMeter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ final class OpenTelemetryMeter implements Meter, RemovableMeter {
3939
List<AsyncMeasurementHandle> measurementHandles = new ArrayList<>();
4040
for (Measurement measurement : measurements) {
4141
String name = statisticInstrumentName(id, measurement.getStatistic(), namingConvention);
42-
String description = description(id);
42+
String description = description(name, id);
4343
String baseUnit = baseUnit(id);
4444

4545
switch (measurement.getStatistic()) {

instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryTimer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ final class OpenTelemetryTimer extends AbstractTimer implements RemovableMeter {
6565
this.otelHistogram =
6666
otelMeter
6767
.histogramBuilder(conventionName)
68-
.setDescription(description(id))
68+
.setDescription(description(conventionName, id))
6969
.setUnit(getUnitString(baseTimeUnit))
7070
.build();
7171
this.maxHandle =
7272
asyncInstrumentRegistry.buildGauge(
7373
conventionName + ".max",
74-
description(id),
74+
description(conventionName, id),
7575
getUnitString(baseTimeUnit),
7676
attributes,
7777
max,

0 commit comments

Comments
 (0)