From 5e4b8e3cefc8993be4af0f329a641bc472ec3f15 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 4 Dec 2018 23:07:09 +0100 Subject: [PATCH] Fixed broken build with a hack --- .../SleuthTracingRabbitListenerAdvice.java | 31 +++++++++++++++++++ .../TraceMessagingAutoConfiguration.java | 16 ++++++++-- .../web/TraceWebAutoConfiguration.java | 2 +- .../grpc/stubs/HelloServiceGrpc.java | 7 ++--- .../client/integration/WebClientTests.java | 3 +- 5 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 spring-cloud-sleuth-core/src/main/java/brave/spring/rabbit/SleuthTracingRabbitListenerAdvice.java diff --git a/spring-cloud-sleuth-core/src/main/java/brave/spring/rabbit/SleuthTracingRabbitListenerAdvice.java b/spring-cloud-sleuth-core/src/main/java/brave/spring/rabbit/SleuthTracingRabbitListenerAdvice.java new file mode 100644 index 000000000..fb947b298 --- /dev/null +++ b/spring-cloud-sleuth-core/src/main/java/brave/spring/rabbit/SleuthTracingRabbitListenerAdvice.java @@ -0,0 +1,31 @@ +/* + * Copyright 2013-2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package brave.spring.rabbit; + +/** + * Internal class - do not use. Will be removed when fixed in Brave. + * + * @author Marcin Grzejszczak + * @since 2.1.0 + */ +public final class SleuthTracingRabbitListenerAdvice { + + public static TracingRabbitListenerAdvice advice(SpringRabbitTracing tracing) { + return new TracingRabbitListenerAdvice(tracing); + } + +} diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java index 46568de66..a5fac76f2 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java @@ -26,6 +26,7 @@ import brave.Tracing; import brave.jms.JmsTracing; import brave.kafka.clients.KafkaTracing; import brave.propagation.CurrentTraceContext; +import brave.spring.rabbit.SleuthTracingRabbitListenerAdvice; import brave.spring.rabbit.SpringRabbitTracing; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; @@ -38,6 +39,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; + import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.aop.framework.ProxyFactoryBean; @@ -183,8 +185,18 @@ class SleuthRabbitBeanPostProcessor implements BeanPostProcessor { return rabbitTracing().decorateRabbitTemplate((RabbitTemplate) bean); } else if (bean instanceof SimpleRabbitListenerContainerFactory) { - return rabbitTracing().decorateSimpleRabbitListenerContainerFactory( - (SimpleRabbitListenerContainerFactory) bean); + try { + return rabbitTracing().decorateSimpleRabbitListenerContainerFactory( + (SimpleRabbitListenerContainerFactory) bean); + } + catch (NullPointerException ex) { + // TODO: Fix this in Rabbit or Brave + SpringRabbitTracing springRabbitTracing = rabbitTracing(); + SimpleRabbitListenerContainerFactory factory = (SimpleRabbitListenerContainerFactory) bean; + factory.setAdviceChain( + SleuthTracingRabbitListenerAdvice.advice(springRabbitTracing)); + return factory; + } } return bean; } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java index 665a23264..287d56cbd 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java @@ -93,7 +93,7 @@ public class TraceWebAutoConfiguration { } @Configuration - @ConditionalOnClass({ServerProperties.class, WebEndpointProperties.class}) + @ConditionalOnClass({ ServerProperties.class, WebEndpointProperties.class }) protected static class ServerSkipPatternProviderConfig { /** diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java index cb4d1d534..7e4437c6a 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java @@ -73,16 +73,15 @@ public final class HelloServiceGrpc { } /** - * Creates a new blocking-style stub that supports unary and streaming - * output calls on the service + * Creates a new blocking-style stub that supports unary and streaming output calls on + * the service */ public static HelloServiceBlockingStub newBlockingStub(io.grpc.Channel channel) { return new HelloServiceBlockingStub(channel); } /** - * Creates a new ListenableFuture-style stub that supports unary calls on - * the service + * Creates a new ListenableFuture-style stub that supports unary calls on the service */ public static HelloServiceFutureStub newFutureStub(io.grpc.Channel channel) { return new HelloServiceFutureStub(channel); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/integration/WebClientTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/integration/WebClientTests.java index 69715ea0d..58b5217cd 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/integration/WebClientTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/integration/WebClientTests.java @@ -384,8 +384,7 @@ public class WebClientTests { try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span)) { this.webClient.get().uri("http://localhost:" + this.port + "/noresponse") - .retrieve().bodyToMono(String.class) - .timeout(Duration.ofMillis(0)) + .retrieve().bodyToMono(String.class).timeout(Duration.ofMillis(0)) .block(); } catch (Exception e) {