From 2a09be747d865024de153dbfe5938f82c39c507e Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 3 Jul 2017 08:00:40 +0200 Subject: [PATCH] Making Hystrix + Feign opt in without this change we allways force Feign to use Hystrix with this change you need to pass the `feign.hystrix.enabled=true` flag to turn it on fixes #627 --- .../TraceFeignClientAutoConfiguration.java | 4 +-- .../FeignClientServerErrorTests.java | 25 +++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java index 1cb5fe30f..5b717e6a0 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java @@ -53,7 +53,7 @@ public class TraceFeignClientAutoConfiguration { @Bean @Scope("prototype") @ConditionalOnClass(name = {"com.netflix.hystrix.HystrixCommand", "feign.hystrix.HystrixFeign"}) - @ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = true) + @ConditionalOnProperty(name = "feign.hystrix.enabled", havingValue = "true") Feign.Builder feignHystrixBuilder(BeanFactory beanFactory) { return SleuthHystrixFeignBuilder.builder(beanFactory); } @@ -61,7 +61,7 @@ public class TraceFeignClientAutoConfiguration { @Bean @ConditionalOnMissingBean @Scope("prototype") - @ConditionalOnProperty(name = "feign.hystrix.enabled", havingValue = "false") + @ConditionalOnProperty(name = "feign.hystrix.enabled", havingValue = "false", matchIfMissing = true) Feign.Builder feignBuilder(BeanFactory beanFactory) { return SleuthFeignBuilder.builder(beanFactory); } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/servererrors/FeignClientServerErrorTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/servererrors/FeignClientServerErrorTests.java index b9b5fa686..61af25b9f 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/servererrors/FeignClientServerErrorTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/servererrors/FeignClientServerErrorTests.java @@ -16,10 +16,13 @@ package org.springframework.cloud.sleuth.instrument.web.client.feign.servererrors; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - +import com.jayway.awaitility.Awaitility; +import com.netflix.hystrix.exception.HystrixRuntimeException; +import com.netflix.loadbalancer.BaseLoadBalancer; +import com.netflix.loadbalancer.ILoadBalancer; +import com.netflix.loadbalancer.Server; +import feign.codec.Decoder; +import feign.codec.ErrorDecoder; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -54,14 +57,9 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; -import com.jayway.awaitility.Awaitility; -import com.netflix.hystrix.exception.HystrixRuntimeException; -import com.netflix.loadbalancer.BaseLoadBalancer; -import com.netflix.loadbalancer.ILoadBalancer; -import com.netflix.loadbalancer.Server; - -import feign.codec.Decoder; -import feign.codec.ErrorDecoder; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; @@ -72,7 +70,8 @@ import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; */ @RunWith(SpringRunner.class) @SpringBootTest(classes = FeignClientServerErrorTests.TestConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@TestPropertySource(properties = { "spring.application.name=fooservice" }) +@TestPropertySource(properties = { "spring.application.name=fooservice" , +"feign.hystrix.enabled=true"}) public class FeignClientServerErrorTests { @Autowired TestFeignInterface feignInterface;