Skip to content

Commit a03903c

Browse files
minor refactoring and adds testInstrumentation
1 parent faf4a92 commit a03903c

17 files changed

+124
-91
lines changed

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/db/AerospikeMetrics.java

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.instrumentation.api.instrumenter.db;
27

38
import static io.opentelemetry.instrumentation.api.instrumenter.db.DbMessageSizeUtil.getMessageSize;
@@ -31,20 +36,17 @@ public final class AerospikeMetrics implements OperationListener {
3136
private final LongCounter responseCounter;
3237
private final LongUpDownCounter concurrencyUpDownCounter;
3338
private final DoubleHistogram clientLatencyHistogram;
39+
3440
@SuppressWarnings("unused")
3541
private final DoubleHistogram recordSizeHistogram;
3642

3743
private AerospikeMetrics(Meter meter) {
3844
LongCounterBuilder requestCounterBuilder =
39-
meter
40-
.counterBuilder("aerospike.requests")
41-
.setDescription("Aerospike Calls");
45+
meter.counterBuilder("aerospike.requests").setDescription("Aerospike Calls");
4246
AerospikeMetricsAdvice.applyRequestCounterAdvice(requestCounterBuilder);
4347
requestCounter = requestCounterBuilder.build();
4448
LongCounterBuilder responseCounterBuilder =
45-
meter
46-
.counterBuilder("aerospike.response")
47-
.setDescription("Aerospike Responses");
49+
meter.counterBuilder("aerospike.response").setDescription("Aerospike Responses");
4850
AerospikeMetricsAdvice.applyResponseCounterAdvice(responseCounterBuilder);
4951
responseCounter = responseCounterBuilder.build();
5052
LongUpDownCounterBuilder concurrencyUpDownCounterBuilder =
@@ -73,7 +75,6 @@ public static OperationMetrics get() {
7375
return AerospikeMetrics::new;
7476
}
7577

76-
7778
@Override
7879
public Context onStart(Context context, Attributes startAttributes, long startNanos) {
7980
requestCounter.add(1, startAttributes, context);
@@ -97,9 +98,7 @@ public void onEnd(Context context, Attributes endAttributes, long endNanos) {
9798
Attributes mergedAttributes = state.startAttributes().toBuilder().putAll(endAttributes).build();
9899
responseCounter.add(1, mergedAttributes, context);
99100
clientLatencyHistogram.record(
100-
(endNanos - state.startTimeNanos()) / NANOS_PER_MS,
101-
mergedAttributes,
102-
context);
101+
(endNanos - state.startTimeNanos()) / NANOS_PER_MS, mergedAttributes, context);
103102
Long requestBodySize = getMessageSize(mergedAttributes);
104103
if (requestBodySize != null) {
105104
recordSizeHistogram.record(requestBodySize, mergedAttributes, context);

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/db/AerospikeMetricsAdvice.java

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.instrumentation.api.instrumenter.db;
27

38
import io.opentelemetry.api.common.AttributeKey;

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/db/AerospikeSemanticAttributes.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.instrumentation.api.instrumenter.db;
27

38
import static io.opentelemetry.api.common.AttributeKey.longKey;
@@ -13,13 +18,12 @@ private AerospikeSemanticAttributes() {}
1318
public static final AttributeKey<String> AEROSPIKE_NAMESPACE = stringKey("aerospike.namespace");
1419
public static final AttributeKey<String> AEROSPIKE_SET_NAME = stringKey("aerospike.set.name");
1520
public static final AttributeKey<String> AEROSPIKE_USER_KEY = stringKey("aerospike.user.key");
16-
public static final AttributeKey<Long> AEROSPIKE_TRANSFER_SIZE = longKey(
17-
"aerospike.transfer.size");
21+
public static final AttributeKey<Long> AEROSPIKE_TRANSFER_SIZE =
22+
longKey("aerospike.transfer.size");
1823

1924
public static final class DbSystemValues {
2025
public static final String AEROSPIKE = "aerospike";
2126

2227
private DbSystemValues() {}
2328
}
24-
2529
}

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/db/DbMessageSizeUtil.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.instrumentation.api.instrumenter.db;
27

38
import io.opentelemetry.api.common.AttributeKey;
@@ -24,4 +29,3 @@ private static <T> T getAttribute(AttributeKey<T> key, Attributes... attributesL
2429

2530
private DbMessageSizeUtil() {}
2631
}
27-

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ dependencies {
1616

1717
compileOnly("com.google.auto.value:auto-value-annotations")
1818
annotationProcessor("com.google.auto.value:auto-value")
19+
testInstrumentation(project(":instrumentation:aerospike-client:aerospike-client-7.1:javaagent"))
1920
}
2021

2122
tasks {

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/AerospikeClientAttributeExtractor.java

+22-14
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.javaagent.instrumentation.aerospike_client.v7_1;
27

38
import com.aerospike.client.AerospikeException;
@@ -8,37 +13,40 @@
813
import io.opentelemetry.instrumentation.api.instrumenter.db.AerospikeSemanticAttributes;
914
import javax.annotation.Nullable;
1015

11-
public class AerospikeClientAttributeExtractor implements
12-
AttributesExtractor<AerospikeRequest, Void> {
16+
public class AerospikeClientAttributeExtractor
17+
implements AttributesExtractor<AerospikeRequest, Void> {
1318

1419
@Override
15-
public void onStart(AttributesBuilder attributes, Context parentContext,
16-
AerospikeRequest aerospikeRequest) {
20+
public void onStart(
21+
AttributesBuilder attributes, Context parentContext, AerospikeRequest aerospikeRequest) {
1722
attributes.put(
18-
AerospikeSemanticAttributes.AEROSPIKE_NAMESPACE,
19-
aerospikeRequest.getNamespace());
23+
AerospikeSemanticAttributes.AEROSPIKE_NAMESPACE, aerospikeRequest.getNamespace());
2024
attributes.put(AerospikeSemanticAttributes.AEROSPIKE_SET_NAME, aerospikeRequest.getSet());
2125
attributes.put(AerospikeSemanticAttributes.AEROSPIKE_USER_KEY, aerospikeRequest.getUserKey());
2226
}
2327

2428
@Override
25-
public void onEnd(AttributesBuilder attributes, Context context,
26-
AerospikeRequest aerospikeRequest, @Nullable Void unused, @Nullable Throwable error) {
27-
attributes.put(AerospikeSemanticAttributes.AEROSPIKE_STATUS,
28-
aerospikeRequest.getStatus().name());
29+
public void onEnd(
30+
AttributesBuilder attributes,
31+
Context context,
32+
AerospikeRequest aerospikeRequest,
33+
@Nullable Void unused,
34+
@Nullable Throwable error) {
35+
attributes.put(
36+
AerospikeSemanticAttributes.AEROSPIKE_STATUS, aerospikeRequest.getStatus().name());
2937
if (error != null) {
3038
if (error instanceof AerospikeException) {
3139
AerospikeException aerospikeException = (AerospikeException) error;
32-
attributes.put(AerospikeSemanticAttributes.AEROSPIKE_ERROR_CODE,
33-
aerospikeException.getResultCode());
40+
attributes.put(
41+
AerospikeSemanticAttributes.AEROSPIKE_ERROR_CODE, aerospikeException.getResultCode());
3442
} else {
3543
attributes.put(AerospikeSemanticAttributes.AEROSPIKE_ERROR_CODE, ResultCode.CLIENT_ERROR);
3644
}
3745
} else {
3846
attributes.put(AerospikeSemanticAttributes.AEROSPIKE_ERROR_CODE, ResultCode.OK);
3947
if (aerospikeRequest.getSize() != null) {
40-
attributes.put(AerospikeSemanticAttributes.AEROSPIKE_TRANSFER_SIZE,
41-
aerospikeRequest.getSize());
48+
attributes.put(
49+
AerospikeSemanticAttributes.AEROSPIKE_TRANSFER_SIZE, aerospikeRequest.getSize());
4250
}
4351
}
4452
}

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/AerospikeClientInstrumentationModule.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ public List<TypeInstrumentation> typeInstrumentations() {
3434
new TransferSizeIntrumentation(),
3535
new AsyncCommandInstrumentation(),
3636
new AsyncHandlerInstrumentation(),
37-
new AsyncScanAllCommandInstrumentation()
38-
);
37+
new AsyncScanAllCommandInstrumentation());
3938
}
4039

4140
@Override

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/AerospikeRequest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ public abstract class AerospikeRequest {
1717
private Status status;
1818

1919
public static AerospikeRequest create(String operation, Key key) {
20-
return new AutoValue_AerospikeRequest(operation, key.namespace, key.setName, key.userKey.toString());
20+
return new AutoValue_AerospikeRequest(
21+
operation, key.namespace, key.setName, key.userKey.toString());
2122
}
2223

2324
public static AerospikeRequest create(String operation, String namespace, String set) {

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/AerospikeRequestContext.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1010

1111
public final class AerospikeRequestContext {
12-
private static final ThreadLocal<AerospikeRequestContext> contextThreadLocal = new ThreadLocal<>();
12+
private static final ThreadLocal<AerospikeRequestContext> contextThreadLocal =
13+
new ThreadLocal<>();
1314
private AerospikeRequest request;
1415
private Context context;
1516

@@ -34,7 +35,9 @@ public static AerospikeRequestContext current() {
3435
}
3536

3637
public void endSpan(
37-
Instrumenter<AerospikeRequest, Void> instrumenter, Context context, AerospikeRequest request,
38+
Instrumenter<AerospikeRequest, Void> instrumenter,
39+
Context context,
40+
AerospikeRequest request,
3841
Throwable throwable) {
3942
instrumenter.end(context, request, null, throwable);
4043
}

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/AsyncCommandInstrumentation.java

+10-11
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,15 @@
2828
public class AsyncCommandInstrumentation implements TypeInstrumentation {
2929
@Override
3030
public ElementMatcher<TypeDescription> typeMatcher() {
31-
return hasSuperClass(named("com.aerospike.client.async.AsyncCommand").and(
32-
not(named("com.aerospike.client.command.Command"))));
31+
return hasSuperClass(
32+
named("com.aerospike.client.async.AsyncCommand")
33+
.and(not(named("com.aerospike.client.command.Command"))));
3334
}
3435

3536
@Override
3637
public void transform(TypeTransformer transformer) {
3738
transformer.applyAdviceToMethod(
38-
isConstructor()
39-
.and(isPublic()),
40-
this.getClass().getName() + "$ConstructorAdvice");
39+
isConstructor().and(isPublic()), this.getClass().getName() + "$ConstructorAdvice");
4140
}
4241

4342
@SuppressWarnings("unused")
@@ -59,21 +58,21 @@ public static void onExit(
5958
if (key == null) {
6059
return;
6160
}
62-
VirtualField<Command, AerospikeRequestContext> virtualField = VirtualField.find(Command.class,
63-
AerospikeRequestContext.class);
61+
VirtualField<Command, AerospikeRequestContext> virtualField =
62+
VirtualField.find(Command.class, AerospikeRequestContext.class);
6463
AerospikeRequestContext requestContext = virtualField.get(command);
6564
if (requestContext != null) {
6665
return;
6766
}
6867
Context parentContext = currentContext();
69-
request = AerospikeRequest.create(command.getClass().getSimpleName().toUpperCase(Locale.ROOT),
70-
key);
68+
request =
69+
AerospikeRequest.create(command.getClass().getSimpleName().toUpperCase(Locale.ROOT), key);
7170
if (!instrumenter().shouldStart(parentContext, request)) {
7271
return;
7372
}
7473
context = instrumenter().start(parentContext, request);
75-
AerospikeRequestContext aerospikeRequestContext = AerospikeRequestContext.attach(request,
76-
context);
74+
AerospikeRequestContext aerospikeRequestContext =
75+
AerospikeRequestContext.attach(request, context);
7776
scope = context.makeCurrent();
7877

7978
virtualField.set(command, aerospikeRequestContext);

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/AsyncHandlerInstrumentation.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ public ElementMatcher<TypeDescription> typeMatcher() {
3434
@Override
3535
public void transform(TypeTransformer transformer) {
3636
transformer.applyAdviceToMethod(
37-
named("onSuccess")
38-
.and(takesNoArguments())
39-
.and(isProtected()),
37+
named("onSuccess").and(takesNoArguments()).and(isProtected()),
4038
this.getClass().getName() + "$OnSuccessAdvice");
4139
transformer.applyAdviceToMethod(
4240
named("onFailure")
@@ -50,8 +48,8 @@ public static class OnSuccessAdvice {
5048

5149
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
5250
public static void onExit(@Advice.Thrown Throwable throwable, @Advice.This Command command) {
53-
VirtualField<Command, AerospikeRequestContext> virtualField = VirtualField.find(Command.class,
54-
AerospikeRequestContext.class);
51+
VirtualField<Command, AerospikeRequestContext> virtualField =
52+
VirtualField.find(Command.class, AerospikeRequestContext.class);
5553
AerospikeRequestContext requestContext = virtualField.get(command);
5654
virtualField.set(command, null);
5755
if (requestContext != null) {
@@ -76,8 +74,8 @@ public static class OnFailureAdvice {
7674

7775
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
7876
public static void onExit(@Advice.Thrown Throwable throwable, @Advice.This Command command) {
79-
VirtualField<Command, AerospikeRequestContext> virtualField = VirtualField.find(Command.class,
80-
AerospikeRequestContext.class);
77+
VirtualField<Command, AerospikeRequestContext> virtualField =
78+
VirtualField.find(Command.class, AerospikeRequestContext.class);
8179
AerospikeRequestContext requestContext = virtualField.get(command);
8280
virtualField.set(command, null);
8381
if (requestContext != null) {

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/AsyncScanAllCommandInstrumentation.java

+19-22
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,9 @@ public ElementMatcher<TypeDescription> typeMatcher() {
3636
@Override
3737
public void transform(TypeTransformer transformer) {
3838
transformer.applyAdviceToMethod(
39-
isConstructor()
40-
.and(isPublic()),
41-
this.getClass().getName() + "$ConstructorAdvice");
39+
isConstructor().and(isPublic()), this.getClass().getName() + "$ConstructorAdvice");
4240
transformer.applyAdviceToMethod(
43-
named("onSuccess")
44-
.and(takesNoArguments())
45-
.and(isProtected()),
41+
named("onSuccess").and(takesNoArguments()).and(isProtected()),
4642
this.getClass().getName() + "$OnSuccessAdvice");
4743
transformer.applyAdviceToMethod(
4844
named("onFailure")
@@ -61,23 +57,24 @@ public static void onExit(
6157
@Advice.Local("otelScope") Scope scope,
6258
@Advice.Argument(4) String namespace,
6359
@Advice.Argument(5) String setName) {
64-
VirtualField<AsyncScanPartitionExecutor, AerospikeRequestContext> virtualField = VirtualField.find(
65-
AsyncScanPartitionExecutor.class,
66-
AerospikeRequestContext.class);
60+
VirtualField<AsyncScanPartitionExecutor, AerospikeRequestContext> virtualField =
61+
VirtualField.find(AsyncScanPartitionExecutor.class, AerospikeRequestContext.class);
6762
AerospikeRequestContext requestContext = virtualField.get(asyncScanPartitionExecutor);
6863
if (requestContext != null) {
6964
return;
7065
}
7166
Context parentContext = currentContext();
72-
request = AerospikeRequest.create(
73-
asyncScanPartitionExecutor.getClass().getSimpleName().toUpperCase(Locale.ROOT),
74-
namespace, setName);
67+
request =
68+
AerospikeRequest.create(
69+
asyncScanPartitionExecutor.getClass().getSimpleName().toUpperCase(Locale.ROOT),
70+
namespace,
71+
setName);
7572
if (!instrumenter().shouldStart(parentContext, request)) {
7673
return;
7774
}
7875
context = instrumenter().start(parentContext, request);
79-
AerospikeRequestContext aerospikeRequestContext = AerospikeRequestContext.attach(request,
80-
context);
76+
AerospikeRequestContext aerospikeRequestContext =
77+
AerospikeRequestContext.attach(request, context);
8178
scope = context.makeCurrent();
8279

8380
virtualField.set(asyncScanPartitionExecutor, aerospikeRequestContext);
@@ -91,11 +88,11 @@ public static void onExit(
9188
public static class OnSuccessAdvice {
9289

9390
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
94-
public static void onExit(@Advice.Thrown Throwable throwable,
91+
public static void onExit(
92+
@Advice.Thrown Throwable throwable,
9593
@Advice.This AsyncScanPartitionExecutor asyncScanPartitionExecutor) {
96-
VirtualField<AsyncScanPartitionExecutor, AerospikeRequestContext> virtualField = VirtualField.find(
97-
AsyncScanPartitionExecutor.class,
98-
AerospikeRequestContext.class);
94+
VirtualField<AsyncScanPartitionExecutor, AerospikeRequestContext> virtualField =
95+
VirtualField.find(AsyncScanPartitionExecutor.class, AerospikeRequestContext.class);
9996
AerospikeRequestContext requestContext = virtualField.get(asyncScanPartitionExecutor);
10097
virtualField.set(asyncScanPartitionExecutor, null);
10198
if (requestContext != null) {
@@ -119,11 +116,11 @@ public static void onExit(@Advice.Thrown Throwable throwable,
119116
public static class OnFailureAdvice {
120117

121118
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
122-
public static void onExit(@Advice.Thrown Throwable throwable,
119+
public static void onExit(
120+
@Advice.Thrown Throwable throwable,
123121
@Advice.This AsyncScanPartitionExecutor asyncScanPartitionExecutor) {
124-
VirtualField<AsyncScanPartitionExecutor, AerospikeRequestContext> virtualField = VirtualField.find(
125-
AsyncScanPartitionExecutor.class,
126-
AerospikeRequestContext.class);
122+
VirtualField<AsyncScanPartitionExecutor, AerospikeRequestContext> virtualField =
123+
VirtualField.find(AsyncScanPartitionExecutor.class, AerospikeRequestContext.class);
127124
AerospikeRequestContext requestContext = virtualField.get(asyncScanPartitionExecutor);
128125
virtualField.set(asyncScanPartitionExecutor, null);
129126
if (requestContext != null) {

instrumentation/aerospike-client/aerospike-client-7.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/aerospike_client/v7_1/NetworkAttributesGetter.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@
1010
import java.net.InetSocketAddress;
1111
import javax.annotation.Nullable;
1212

13-
final class NetworkAttributesGetter implements
14-
ServerAttributesGetter<AerospikeRequest, Void>,
15-
io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter<AerospikeRequest, Void> {
13+
final class NetworkAttributesGetter
14+
implements ServerAttributesGetter<AerospikeRequest, Void>,
15+
io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter<
16+
AerospikeRequest, Void> {
1617

1718
@Override
1819
@Nullable
19-
public InetSocketAddress getNetworkPeerInetSocketAddress(AerospikeRequest aerospikeRequest,
20-
@Nullable Void unused) {
20+
public InetSocketAddress getNetworkPeerInetSocketAddress(
21+
AerospikeRequest aerospikeRequest, @Nullable Void unused) {
2122
Node node = aerospikeRequest.getNode();
2223
if (node != null) {
2324
return node.getAddress();

0 commit comments

Comments
 (0)