Skip to content

Commit ef8c6e1

Browse files
committed
Fix Geode stable collection attribute
1 parent 213e7fd commit ef8c6e1

2 files changed

Lines changed: 81 additions & 17 deletions

File tree

instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/GeodeDbAttributesGetter.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,20 @@ public String getDbSystemName(GeodeRequest request) {
2929
@Override
3030
@Nullable
3131
public String getDbNamespace(GeodeRequest request) {
32+
return null;
33+
}
34+
35+
@Override
36+
@Nullable
37+
public String getDbCollectionName(GeodeRequest request) {
38+
return request.getRegion().getName();
39+
}
40+
41+
@Override
42+
@Nullable
43+
// Old database semconv still use db.name, so we must implement the deprecated hook.
44+
@SuppressWarnings("deprecation")
45+
public String getDbName(GeodeRequest request) {
3246
return request.getRegion().getName();
3347
}
3448

instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/PutGetTest.java

Lines changed: 67 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55

66
package io.opentelemetry.javaagent.instrumentation.geode.v1_4;
77

8+
import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv;
89
import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric;
910
import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable;
1011
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
12+
import static io.opentelemetry.semconv.DbAttributes.DB_COLLECTION_NAME;
1113
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME;
12-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAMESPACE;
1314
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION;
1415
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION_NAME;
1516
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT;
@@ -68,7 +69,11 @@ void testDurationMetric() {
6869
region.put("key", "value");
6970

7071
assertDurationMetric(
71-
testing, "io.opentelemetry.geode-1.4", DB_SYSTEM_NAME, DB_NAMESPACE, DB_OPERATION_NAME);
72+
testing,
73+
"io.opentelemetry.geode-1.4",
74+
DB_SYSTEM_NAME,
75+
DB_COLLECTION_NAME,
76+
DB_OPERATION_NAME);
7277
}
7378

7479
@ParameterizedTest
@@ -92,21 +97,30 @@ void testPutAndGet(Object key, Object value) {
9297
.hasKind(SpanKind.CLIENT)
9398
.hasAttributesSatisfyingExactly(
9499
equalTo(maybeStable(DB_SYSTEM), GEODE),
95-
equalTo(maybeStable(DB_NAME), "test-region"),
100+
equalTo(
101+
DB_COLLECTION_NAME,
102+
emitStableDatabaseSemconv() ? "test-region" : null),
103+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
96104
equalTo(maybeStable(DB_OPERATION), "clear")),
97105
span ->
98106
span.hasName("put test-region")
99107
.hasKind(SpanKind.CLIENT)
100108
.hasAttributesSatisfyingExactly(
101109
equalTo(maybeStable(DB_SYSTEM), GEODE),
102-
equalTo(maybeStable(DB_NAME), "test-region"),
110+
equalTo(
111+
DB_COLLECTION_NAME,
112+
emitStableDatabaseSemconv() ? "test-region" : null),
113+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
103114
equalTo(maybeStable(DB_OPERATION), "put")),
104115
span ->
105116
span.hasName("get test-region")
106117
.hasKind(SpanKind.CLIENT)
107118
.hasAttributesSatisfyingExactly(
108119
equalTo(maybeStable(DB_SYSTEM), GEODE),
109-
equalTo(maybeStable(DB_NAME), "test-region"),
120+
equalTo(
121+
DB_COLLECTION_NAME,
122+
emitStableDatabaseSemconv() ? "test-region" : null),
123+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
110124
equalTo(maybeStable(DB_OPERATION), "get"))));
111125
}
112126

@@ -130,21 +144,30 @@ void testPutAndRemove(Object key, Object value) {
130144
.hasKind(SpanKind.CLIENT)
131145
.hasAttributesSatisfyingExactly(
132146
equalTo(maybeStable(DB_SYSTEM), GEODE),
133-
equalTo(maybeStable(DB_NAME), "test-region"),
147+
equalTo(
148+
DB_COLLECTION_NAME,
149+
emitStableDatabaseSemconv() ? "test-region" : null),
150+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
134151
equalTo(maybeStable(DB_OPERATION), "clear")),
135152
span ->
136153
span.hasName("put test-region")
137154
.hasKind(SpanKind.CLIENT)
138155
.hasAttributesSatisfyingExactly(
139156
equalTo(maybeStable(DB_SYSTEM), GEODE),
140-
equalTo(maybeStable(DB_NAME), "test-region"),
157+
equalTo(
158+
DB_COLLECTION_NAME,
159+
emitStableDatabaseSemconv() ? "test-region" : null),
160+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
141161
equalTo(maybeStable(DB_OPERATION), "put")),
142162
span ->
143163
span.hasName("remove test-region")
144164
.hasKind(SpanKind.CLIENT)
145165
.hasAttributesSatisfyingExactly(
146166
equalTo(maybeStable(DB_SYSTEM), GEODE),
147-
equalTo(maybeStable(DB_NAME), "test-region"),
167+
equalTo(
168+
DB_COLLECTION_NAME,
169+
emitStableDatabaseSemconv() ? "test-region" : null),
170+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
148171
equalTo(maybeStable(DB_OPERATION), "remove"))));
149172
}
150173

@@ -169,21 +192,30 @@ void testQuery(Object key, Object value) throws QueryException {
169192
.hasKind(SpanKind.CLIENT)
170193
.hasAttributesSatisfyingExactly(
171194
equalTo(maybeStable(DB_SYSTEM), GEODE),
172-
equalTo(maybeStable(DB_NAME), "test-region"),
195+
equalTo(
196+
DB_COLLECTION_NAME,
197+
emitStableDatabaseSemconv() ? "test-region" : null),
198+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
173199
equalTo(maybeStable(DB_OPERATION), "clear")),
174200
span ->
175201
span.hasName("put test-region")
176202
.hasKind(SpanKind.CLIENT)
177203
.hasAttributesSatisfyingExactly(
178204
equalTo(maybeStable(DB_SYSTEM), GEODE),
179-
equalTo(maybeStable(DB_NAME), "test-region"),
205+
equalTo(
206+
DB_COLLECTION_NAME,
207+
emitStableDatabaseSemconv() ? "test-region" : null),
208+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
180209
equalTo(maybeStable(DB_OPERATION), "put")),
181210
span ->
182211
span.hasName("query test-region")
183212
.hasKind(SpanKind.CLIENT)
184213
.hasAttributesSatisfyingExactly(
185214
equalTo(maybeStable(DB_SYSTEM), GEODE),
186-
equalTo(maybeStable(DB_NAME), "test-region"),
215+
equalTo(
216+
DB_COLLECTION_NAME,
217+
emitStableDatabaseSemconv() ? "test-region" : null),
218+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
187219
equalTo(maybeStable(DB_OPERATION), "query"),
188220
equalTo(maybeStable(DB_STATEMENT), "SELECT * FROM /test-region"))));
189221
}
@@ -209,21 +241,30 @@ void testExistsValue(Object key, Object value) throws QueryException {
209241
.hasKind(SpanKind.CLIENT)
210242
.hasAttributesSatisfyingExactly(
211243
equalTo(maybeStable(DB_SYSTEM), GEODE),
212-
equalTo(maybeStable(DB_NAME), "test-region"),
244+
equalTo(
245+
DB_COLLECTION_NAME,
246+
emitStableDatabaseSemconv() ? "test-region" : null),
247+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
213248
equalTo(maybeStable(DB_OPERATION), "clear")),
214249
span ->
215250
span.hasName("put test-region")
216251
.hasKind(SpanKind.CLIENT)
217252
.hasAttributesSatisfyingExactly(
218253
equalTo(maybeStable(DB_SYSTEM), GEODE),
219-
equalTo(maybeStable(DB_NAME), "test-region"),
254+
equalTo(
255+
DB_COLLECTION_NAME,
256+
emitStableDatabaseSemconv() ? "test-region" : null),
257+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
220258
equalTo(maybeStable(DB_OPERATION), "put")),
221259
span ->
222260
span.hasName("existsValue test-region")
223261
.hasKind(SpanKind.CLIENT)
224262
.hasAttributesSatisfyingExactly(
225263
equalTo(maybeStable(DB_SYSTEM), GEODE),
226-
equalTo(maybeStable(DB_NAME), "test-region"),
264+
equalTo(
265+
DB_COLLECTION_NAME,
266+
emitStableDatabaseSemconv() ? "test-region" : null),
267+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
227268
equalTo(maybeStable(DB_OPERATION), "existsValue"),
228269
equalTo(maybeStable(DB_STATEMENT), "SELECT * FROM /test-region"))));
229270
}
@@ -250,21 +291,30 @@ void shouldSanitizeGeodeQuery() throws QueryException {
250291
.hasKind(SpanKind.CLIENT)
251292
.hasAttributesSatisfyingExactly(
252293
equalTo(maybeStable(DB_SYSTEM), GEODE),
253-
equalTo(maybeStable(DB_NAME), "test-region"),
294+
equalTo(
295+
DB_COLLECTION_NAME,
296+
emitStableDatabaseSemconv() ? "test-region" : null),
297+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
254298
equalTo(maybeStable(DB_OPERATION), "clear")),
255299
span ->
256300
span.hasName("put test-region")
257301
.hasKind(SpanKind.CLIENT)
258302
.hasAttributesSatisfyingExactly(
259303
equalTo(maybeStable(DB_SYSTEM), GEODE),
260-
equalTo(maybeStable(DB_NAME), "test-region"),
304+
equalTo(
305+
DB_COLLECTION_NAME,
306+
emitStableDatabaseSemconv() ? "test-region" : null),
307+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
261308
equalTo(maybeStable(DB_OPERATION), "put")),
262309
span ->
263310
span.hasName("query test-region")
264311
.hasKind(SpanKind.CLIENT)
265312
.hasAttributesSatisfyingExactly(
266313
equalTo(maybeStable(DB_SYSTEM), GEODE),
267-
equalTo(maybeStable(DB_NAME), "test-region"),
314+
equalTo(
315+
DB_COLLECTION_NAME,
316+
emitStableDatabaseSemconv() ? "test-region" : null),
317+
equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"),
268318
equalTo(maybeStable(DB_OPERATION), "query"),
269319
equalTo(
270320
maybeStable(DB_STATEMENT),

0 commit comments

Comments
 (0)