Avoid double-load-balancing. Fixes gh-1610.
This commit is contained in:
@@ -30,6 +30,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.cloud.netflix.ribbon.SpringClientFactory;
|
||||
import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
|
||||
import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory;
|
||||
import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient;
|
||||
|
||||
@@ -67,7 +68,12 @@ public class TraceLoadBalancerFeignClient extends LoadBalancerFeignClient {
|
||||
Response response = null;
|
||||
Span fallbackSpan = tracer().nextSpan().start();
|
||||
try {
|
||||
response = super.execute(request, options);
|
||||
if (delegateIsALoadBalancer()) {
|
||||
response = getDelegate().execute(request, options);
|
||||
}
|
||||
else {
|
||||
response = super.execute(request, options);
|
||||
}
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("After receive");
|
||||
}
|
||||
@@ -95,6 +101,11 @@ public class TraceLoadBalancerFeignClient extends LoadBalancerFeignClient {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean delegateIsALoadBalancer() {
|
||||
return getDelegate() instanceof LoadBalancerFeignClient
|
||||
|| getDelegate() instanceof FeignBlockingLoadBalancerClient;
|
||||
}
|
||||
|
||||
private Tracer tracer() {
|
||||
if (this.tracer == null) {
|
||||
this.tracer = this.beanFactory.getBean(Tracer.class);
|
||||
|
||||
Reference in New Issue
Block a user