Skip to content

Commit 043c857

Browse files
committed
review
1 parent e7fb172 commit 043c857

File tree

13 files changed

+103
-151
lines changed

13 files changed

+103
-151
lines changed

instrumentation/nats/nats-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/nats/v2_17/ConnectionRequestInstrumentation.java

Lines changed: 42 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ public static Message onEnter(
132132
return connection.request(subject, null, body, timeout);
133133
}
134134

135-
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
135+
@Advice.OnMethodExit(suppress = Throwable.class)
136136
public static void onExit(
137-
@Advice.Enter Message message, @Advice.Return(readOnly = false) Message ret) {
138-
ret = message;
137+
@Advice.Return(readOnly = false) Message result, @Advice.Enter Message message) {
138+
result = message;
139139
}
140140
}
141141

@@ -192,26 +192,21 @@ public static class RequestMessageAdvice {
192192
public static Message onEnter(
193193
@Advice.This Connection connection,
194194
@Advice.Argument(0) Message request,
195-
@Advice.Argument(1) Duration timeout,
196-
@Advice.Local("response") Message response)
195+
@Advice.Argument(1) Duration timeout)
197196
throws InterruptedException {
198197
if (request == null) {
199198
return null;
200199
}
201200

202201
// call the instrumented request method
203-
response =
204-
connection.request(
205-
request.getSubject(), request.getHeaders(), request.getData(), timeout);
206-
return response;
202+
return connection.request(
203+
request.getSubject(), request.getHeaders(), request.getData(), timeout);
207204
}
208205

209-
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
210-
public static Message onExit(
211-
@Advice.Return(readOnly = false) Message returned,
212-
@Advice.Local("response") Message response) {
213-
returned = response;
214-
return returned;
206+
@Advice.OnMethodExit(suppress = Throwable.class)
207+
public static void onExit(
208+
@Advice.Return(readOnly = false) Message result, @Advice.Enter Message response) {
209+
result = response;
215210
}
216211
}
217212

@@ -222,19 +217,16 @@ public static class RequestFutureBodyAdvice {
222217
public static CompletableFuture<Message> onEnter(
223218
@Advice.This Connection connection,
224219
@Advice.Argument(0) String subject,
225-
@Advice.Argument(1) byte[] body,
226-
@Advice.Local("future") CompletableFuture<Message> future) {
220+
@Advice.Argument(1) byte[] body) {
227221
// call the instrumented request method
228-
future = connection.request(subject, null, body);
229-
return future;
222+
return connection.request(subject, null, body);
230223
}
231224

232-
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
233-
public static CompletableFuture<Message> onExit(
234-
@Advice.Return(readOnly = false) CompletableFuture<Message> messageFuture,
235-
@Advice.Local("future") CompletableFuture<Message> future) {
236-
messageFuture = future;
237-
return messageFuture;
225+
@Advice.OnMethodExit(suppress = Throwable.class)
226+
public static void onExit(
227+
@Advice.Return(readOnly = false) CompletableFuture<Message> result,
228+
@Advice.Enter CompletableFuture<Message> future) {
229+
result = future;
238230
}
239231
}
240232

@@ -293,25 +285,23 @@ public static class RequestFutureMessageAdvice {
293285

294286
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
295287
public static CompletableFuture<Message> onEnter(
296-
@Advice.This Connection connection,
297-
@Advice.Argument(0) Message message,
298-
@Advice.Local("future") CompletableFuture<Message> future) {
288+
@Advice.This Connection connection, @Advice.Argument(0) Message message) {
299289
// execute original method body to handle null message
300290
if (message == null) {
301291
return null;
302292
}
303293

304294
// call the instrumented request method
305-
future = connection.request(message.getSubject(), message.getHeaders(), message.getData());
306-
return future;
295+
return connection.request(message.getSubject(), message.getHeaders(), message.getData());
307296
}
308297

309-
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
310-
public static CompletableFuture<Message> onExit(
311-
@Advice.Return(readOnly = false) CompletableFuture<Message> messageFuture,
312-
@Advice.Local("future") CompletableFuture<Message> future) {
313-
messageFuture = future;
314-
return messageFuture;
298+
@Advice.OnMethodExit(suppress = Throwable.class)
299+
public static void onExit(
300+
@Advice.Return(readOnly = false) CompletableFuture<Message> result,
301+
@Advice.Enter CompletableFuture<Message> future) {
302+
if (future != null) {
303+
result = future;
304+
}
315305
}
316306
}
317307

@@ -323,19 +313,16 @@ public static CompletableFuture<Message> onEnter(
323313
@Advice.This Connection connection,
324314
@Advice.Argument(0) String subject,
325315
@Advice.Argument(1) byte[] body,
326-
@Advice.Argument(2) Duration timeout,
327-
@Advice.Local("future") CompletableFuture<Message> future) {
316+
@Advice.Argument(2) Duration timeout) {
328317
// call the instrumented requestWithTimeout method
329-
future = connection.requestWithTimeout(subject, null, body, timeout);
330-
return future;
318+
return connection.requestWithTimeout(subject, null, body, timeout);
331319
}
332320

333-
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
334-
public static CompletableFuture<Message> onExit(
335-
@Advice.Return(readOnly = false) CompletableFuture<Message> messageFuture,
336-
@Advice.Local("future") CompletableFuture<Message> future) {
337-
messageFuture = future;
338-
return messageFuture;
321+
@Advice.OnMethodExit(suppress = Throwable.class)
322+
public static void onExit(
323+
@Advice.Return(readOnly = false) CompletableFuture<Message> result,
324+
@Advice.Enter CompletableFuture<Message> future) {
325+
result = future;
339326
}
340327
}
341328

@@ -396,25 +383,23 @@ public static class RequestTimeoutFutureMessageAdvice {
396383
public static CompletableFuture<Message> onEnter(
397384
@Advice.This Connection connection,
398385
@Advice.Argument(value = 0, readOnly = false) Message message,
399-
@Advice.Argument(1) Duration timeout,
400-
@Advice.Local("future") CompletableFuture<Message> future) {
386+
@Advice.Argument(1) Duration timeout) {
401387
if (message == null) {
402388
return null;
403389
}
404390

405391
// call the instrumented requestWithTimeout method
406-
future =
407-
connection.requestWithTimeout(
408-
message.getSubject(), message.getHeaders(), message.getData(), timeout);
409-
return future;
392+
return connection.requestWithTimeout(
393+
message.getSubject(), message.getHeaders(), message.getData(), timeout);
410394
}
411395

412396
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
413-
public static CompletableFuture<Message> onExit(
414-
@Advice.Return(readOnly = false) CompletableFuture<Message> messageFuture,
415-
@Advice.Local("future") CompletableFuture<Message> future) {
416-
messageFuture = future;
417-
return messageFuture;
397+
public static void onExit(
398+
@Advice.Return(readOnly = false) CompletableFuture<Message> result,
399+
@Advice.Enter CompletableFuture<Message> future) {
400+
if (future != null) {
401+
result = future;
402+
}
418403
}
419404
}
420405
}

instrumentation/nats/nats-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/nats/v2_17/DispatcherInstrumentation.java

Lines changed: 0 additions & 55 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.nats.v2_17;
7+
8+
import com.google.auto.service.AutoService;
9+
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
10+
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
11+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
12+
13+
@AutoService(IgnoredTypesConfigurer.class)
14+
public class NatsIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
15+
16+
@Override
17+
public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {
18+
builder.ignoreTaskClass("io.nats.client.impl.NatsDispatcher");
19+
}
20+
}

instrumentation/nats/nats-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/nats/v2_17/NatsInstrumentationModule.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ public List<TypeInstrumentation> typeInstrumentations() {
2424
return asList(
2525
new ConnectionPublishInstrumentation(),
2626
new ConnectionRequestInstrumentation(),
27-
new DispatcherInstrumentation(),
2827
new MessageHandlerInstrumentation());
2928
}
3029
}

instrumentation/nats/nats-2.17/library/src/main/java/io/nats/client/impl/OpenTelemetryDispatcherFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import io.nats.client.MessageHandler;
99
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
10-
import io.opentelemetry.instrumentation.nats.v2_17.OpenTelemetryMessageHandler;
1110
import io.opentelemetry.instrumentation.nats.v2_17.internal.NatsRequest;
11+
import io.opentelemetry.instrumentation.nats.v2_17.internal.OpenTelemetryMessageHandler;
1212

1313
/**
1414
* This class is internal and is hence not for public use. Its APIs are unstable and can change at

instrumentation/nats/nats-2.17/library/src/main/java/io/opentelemetry/instrumentation/nats/v2_17/OpenTelemetryConnection.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1616
import io.opentelemetry.instrumentation.nats.v2_17.internal.NatsMessageWritableHeaders;
1717
import io.opentelemetry.instrumentation.nats.v2_17.internal.NatsRequest;
18+
import io.opentelemetry.instrumentation.nats.v2_17.internal.OpenTelemetryMessageHandler;
1819
import java.lang.reflect.InvocationHandler;
1920
import java.lang.reflect.InvocationTargetException;
2021
import java.lang.reflect.Method;
@@ -134,10 +135,10 @@ private void publish(Method method, Object[] args) throws Throwable {
134135
}
135136

136137
Context parentContext = Context.current();
137-
headers = NatsMessageWritableHeaders.create(headers);
138138
NatsRequest natsRequest = null;
139139

140140
if (subject != null) {
141+
headers = NatsMessageWritableHeaders.create(headers);
141142
natsRequest = NatsRequest.create(delegate, subject, replyTo, headers, body);
142143
}
143144

@@ -193,10 +194,10 @@ private Message request(Method method, Object[] args) throws Throwable {
193194
}
194195

195196
Context parentContext = Context.current();
196-
headers = NatsMessageWritableHeaders.create(headers);
197197
NatsRequest natsRequest = null;
198198

199199
if (subject != null) {
200+
headers = NatsMessageWritableHeaders.create(headers);
200201
natsRequest = NatsRequest.create(delegate, subject, null, headers, body);
201202
}
202203

@@ -282,10 +283,10 @@ private CompletableFuture<Message> requestAsync(Method method, Object[] args) th
282283
}
283284

284285
Context parentContext = Context.current();
285-
headers = NatsMessageWritableHeaders.create(headers);
286286
NatsRequest natsRequest = null;
287287

288288
if (subject != null) {
289+
headers = NatsMessageWritableHeaders.create(headers);
289290
natsRequest = NatsRequest.create(delegate, subject, null, headers, body);
290291
}
291292

instrumentation/nats/nats-2.17/library/src/main/java/io/opentelemetry/instrumentation/nats/v2_17/OpenTelemetryDispatcher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.nats.client.Subscription;
1111
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1212
import io.opentelemetry.instrumentation.nats.v2_17.internal.NatsRequest;
13+
import io.opentelemetry.instrumentation.nats.v2_17.internal.OpenTelemetryMessageHandler;
1314
import java.lang.reflect.InvocationHandler;
1415
import java.lang.reflect.InvocationTargetException;
1516
import java.lang.reflect.Method;

instrumentation/nats/nats-2.17/library/src/main/java/io/opentelemetry/instrumentation/nats/v2_17/internal/NatsRequestMessagingAttributesGetter.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ enum NatsRequestMessagingAttributesGetter
1515
implements MessagingAttributesGetter<NatsRequest, Object> {
1616
INSTANCE;
1717

18-
@Nullable
1918
@Override
2019
public String getSystem(NatsRequest request) {
2120
return "nats";
@@ -52,7 +51,6 @@ public String getConversationId(NatsRequest request) {
5251
return null;
5352
}
5453

55-
@Nullable
5654
@Override
5755
public Long getMessageBodySize(NatsRequest request) {
5856
return request.getDataSize();
@@ -70,7 +68,6 @@ public String getMessageId(NatsRequest request, @Nullable Object unused) {
7068
return null;
7169
}
7270

73-
@Nullable
7471
@Override
7572
public String getClientId(NatsRequest request) {
7673
return String.valueOf(request.getClientId());
@@ -85,8 +82,10 @@ public Long getBatchMessageCount(NatsRequest request, @Nullable Object unused) {
8582
@Override
8683
public List<String> getMessageHeader(NatsRequest request, String name) {
8784
Headers headers = request.getHeaders();
88-
return headers == null || headers.get(name) == null
89-
? Collections.emptyList()
90-
: headers.get(name);
85+
if (headers == null) {
86+
return Collections.emptyList();
87+
}
88+
List<String> result = headers.get(name);
89+
return result == null ? Collections.emptyList() : result;
9190
}
9291
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.nats.v2_17;
6+
package io.opentelemetry.instrumentation.nats.v2_17.internal;
77

88
import io.nats.client.Message;
99
import io.nats.client.MessageHandler;
1010
import io.opentelemetry.context.Context;
1111
import io.opentelemetry.context.Scope;
1212
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
13-
import io.opentelemetry.instrumentation.nats.v2_17.internal.NatsRequest;
1413

1514
/**
1615
* This class is internal and is hence not for public use. Its APIs are unstable and can change at

0 commit comments

Comments
 (0)