Skip to content

Commit f2348ea

Browse files
authored
Fix exception when pulsar has multiple service addresses (#8816)
1 parent 9e37e72 commit f2348ea

File tree

6 files changed

+23
-11
lines changed

6 files changed

+23
-11
lines changed

instrumentation/pulsar/pulsar-2.8/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/UrlParserTest.java

+7
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public class UrlParserTest {
1616
void parseUrl() {
1717
assertThat(UrlParser.parseUrl(null)).isNull();
1818
assertThat(UrlParser.parseUrl("localhost:1")).isNull();
19+
assertThat(UrlParser.parseUrl("localhost:1,localhost:2")).isNull();
20+
assertThat(UrlParser.parseUrl("localhost:1;localhost:2")).isNull();
1921

2022
{
2123
UrlData url = UrlParser.parseUrl("pulsar://localhost:1");
@@ -32,5 +34,10 @@ void parseUrl() {
3234
assertThat(url.getHost()).isEqualTo("localhost");
3335
assertThat(url.getPort()).isNull();
3436
}
37+
{
38+
UrlData url = UrlParser.parseUrl("pulsar://localhost:xxx");
39+
assertThat(url.getHost()).isEqualTo("localhost");
40+
assertThat(url.getPort()).isNull();
41+
}
3542
}
3643
}

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/ConsumerImplInstrumentation.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,12 @@ public static void after(
8888
@SuppressWarnings("unused")
8989
public static class ConsumerInternalReceiveAdvice {
9090

91-
@Advice.OnMethodEnter
91+
@Advice.OnMethodEnter(suppress = Throwable.class)
9292
public static Timer before() {
9393
return Timer.start();
9494
}
9595

96-
@Advice.OnMethodExit(onThrowable = Throwable.class)
96+
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
9797
public static void after(
9898
@Advice.Enter Timer timer,
9999
@Advice.This Consumer<?> consumer,
@@ -117,7 +117,7 @@ public static Timer before() {
117117
return Timer.start();
118118
}
119119

120-
@Advice.OnMethodExit(onThrowable = Throwable.class)
120+
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
121121
public static void after(
122122
@Advice.Enter Timer timer,
123123
@Advice.This Consumer<?> consumer,
@@ -137,7 +137,7 @@ public static Timer before() {
137137
return Timer.start();
138138
}
139139

140-
@Advice.OnMethodExit(onThrowable = Throwable.class)
140+
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
141141
public static void after(
142142
@Advice.Enter Timer timer,
143143
@Advice.This Consumer<?> consumer,
@@ -154,7 +154,7 @@ public static Timer before() {
154154
return Timer.start();
155155
}
156156

157-
@Advice.OnMethodExit(onThrowable = Throwable.class)
157+
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
158158
public static void after(
159159
@Advice.Enter Timer timer,
160160
@Advice.This Consumer<?> consumer,

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/MessageInstrumentation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void transform(TypeTransformer transformer) {
3333
@SuppressWarnings("unused")
3434
public static class MessageRecycleAdvice {
3535

36-
@Advice.OnMethodExit
36+
@Advice.OnMethodExit(suppress = Throwable.class)
3737
public static void after(@Advice.This Message<?> message) {
3838
// Clean context to prevent memory leak.
3939
VirtualFieldStore.inject(message, null);

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/MessageListenerInstrumentation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void transform(TypeTransformer transformer) {
4444
@SuppressWarnings("unused")
4545
public static class ConsumerConfigurationDataMethodAdvice {
4646

47-
@Advice.OnMethodExit
47+
@Advice.OnMethodExit(suppress = Throwable.class)
4848
public static void after(
4949
@Advice.This ConsumerConfigurationData<?> data,
5050
@Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC)

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/ProducerImplInstrumentation.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void transform(TypeTransformer transformer) {
5656
@SuppressWarnings("unused")
5757
public static class ProducerImplConstructorAdvice {
5858

59-
@Advice.OnMethodExit
59+
@Advice.OnMethodExit(suppress = Throwable.class)
6060
public static void intercept(
6161
@Advice.This ProducerImpl<?> producer, @Advice.Argument(value = 0) PulsarClient client) {
6262
PulsarClientImpl pulsarClient = (PulsarClientImpl) client;
@@ -69,7 +69,7 @@ public static void intercept(
6969
@SuppressWarnings("unused")
7070
public static class ProducerSendAsyncMethodAdvice {
7171

72-
@Advice.OnMethodEnter
72+
@Advice.OnMethodEnter(suppress = Throwable.class)
7373
public static void before(
7474
@Advice.This ProducerImpl<?> producer,
7575
@Advice.Argument(value = 0) Message<?> message,

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/UrlParser.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ public class UrlParser {
1010
private UrlParser() {}
1111

1212
public static UrlData parseUrl(String url) {
13-
if (url == null) {
13+
// if there are multiple addresses then they are separated with , or ;
14+
if (url == null || url.indexOf(',') != -1 || url.indexOf(';') != -1) {
1415
return null;
1516
}
1617

@@ -33,7 +34,11 @@ public static UrlData parseUrl(String url) {
3334
port = null;
3435
} else {
3536
host = authority.substring(0, portStart);
36-
port = Integer.parseInt(authority.substring(portStart + 1));
37+
try {
38+
port = Integer.parseInt(authority.substring(portStart + 1));
39+
} catch (NumberFormatException exception) {
40+
port = null;
41+
}
3742
}
3843

3944
return new UrlData(host, port);

0 commit comments

Comments
 (0)