Making Redis instrumentation lazy; fixes gh-1508
This commit is contained in:
@@ -23,6 +23,7 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
@@ -51,8 +52,8 @@ public class TraceRedisAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
static TraceLettuceClientResourcesBeanPostProcessor traceLettuceClientResourcesBeanPostProcessor(
|
||||
Tracing tracing, TraceRedisProperties traceRedisProperties) {
|
||||
return new TraceLettuceClientResourcesBeanPostProcessor(tracing,
|
||||
BeanFactory beanFactory, TraceRedisProperties traceRedisProperties) {
|
||||
return new TraceLettuceClientResourcesBeanPostProcessor(beanFactory,
|
||||
traceRedisProperties);
|
||||
}
|
||||
|
||||
@@ -65,13 +66,15 @@ class TraceLettuceClientResourcesBeanPostProcessor implements BeanPostProcessor
|
||||
private static final Log log = LogFactory
|
||||
.getLog(TraceLettuceClientResourcesBeanPostProcessor.class);
|
||||
|
||||
private final Tracing tracing;
|
||||
private final BeanFactory beanFactory;
|
||||
|
||||
private final TraceRedisProperties traceRedisProperties;
|
||||
|
||||
TraceLettuceClientResourcesBeanPostProcessor(Tracing tracing,
|
||||
private Tracing tracing;
|
||||
|
||||
TraceLettuceClientResourcesBeanPostProcessor(BeanFactory beanFactory,
|
||||
TraceRedisProperties traceRedisProperties) {
|
||||
this.tracing = tracing;
|
||||
this.beanFactory = beanFactory;
|
||||
this.traceRedisProperties = traceRedisProperties;
|
||||
}
|
||||
|
||||
@@ -91,7 +94,7 @@ class TraceLettuceClientResourcesBeanPostProcessor implements BeanPostProcessor
|
||||
log.debug(
|
||||
"Lettuce ClientResources bean is auto-configured to enable tracing.");
|
||||
}
|
||||
BraveTracing lettuceTracing = BraveTracing.builder().tracing(this.tracing)
|
||||
BraveTracing lettuceTracing = BraveTracing.builder().tracing(tracing())
|
||||
.excludeCommandArgsFromSpanTags()
|
||||
.serviceName(traceRedisProperties.getRemoteServiceName()).build();
|
||||
return cr.mutate().tracing(lettuceTracing).build();
|
||||
@@ -104,4 +107,11 @@ class TraceLettuceClientResourcesBeanPostProcessor implements BeanPostProcessor
|
||||
return bean;
|
||||
}
|
||||
|
||||
private Tracing tracing() {
|
||||
if (this.tracing == null) {
|
||||
this.tracing = this.beanFactory.getBean(Tracing.class);
|
||||
}
|
||||
return this.tracing;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
|
||||
package org.springframework.cloud.sleuth.instrument.redis;
|
||||
|
||||
import brave.Tracing;
|
||||
import io.lettuce.core.resource.ClientResources;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@@ -72,8 +72,8 @@ public class TraceRedisAutoConfigurationTests {
|
||||
|
||||
@Bean
|
||||
TestTraceLettuceClientResourcesBeanPostProcessor testTraceLettuceClientResourcesBeanPostProcessor(
|
||||
Tracing tracing, TraceRedisProperties traceRedisProperties) {
|
||||
return new TestTraceLettuceClientResourcesBeanPostProcessor(tracing,
|
||||
BeanFactory beanFactory, TraceRedisProperties traceRedisProperties) {
|
||||
return new TestTraceLettuceClientResourcesBeanPostProcessor(beanFactory,
|
||||
traceRedisProperties);
|
||||
}
|
||||
|
||||
@@ -86,9 +86,9 @@ class TestTraceLettuceClientResourcesBeanPostProcessor
|
||||
|
||||
boolean tracingCalled = false;
|
||||
|
||||
TestTraceLettuceClientResourcesBeanPostProcessor(Tracing tracing,
|
||||
TestTraceLettuceClientResourcesBeanPostProcessor(BeanFactory beanFactory,
|
||||
TraceRedisProperties traceRedisProperties) {
|
||||
super(tracing, traceRedisProperties);
|
||||
super(beanFactory, traceRedisProperties);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user