From 77b6641ac1b696bf6b0ec312a189ed4b6ea76404 Mon Sep 17 00:00:00 2001 From: Christian Dupuis Date: Tue, 28 Oct 2014 12:57:56 +0100 Subject: [PATCH] Introduced a new status for open circuits in the /health endpoint --- .../hystrix/HystrixAutoConfiguration.java | 29 +++---------------- .../netflix/hystrix/HystrixConfiguration.java | 1 + .../hystrix/HystrixHealthIndicator.java | 20 ++++--------- 3 files changed, 11 insertions(+), 39 deletions(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixAutoConfiguration.java index 10b00d68..3cf56044 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixAutoConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixAutoConfiguration.java @@ -16,14 +16,8 @@ package org.springframework.cloud.netflix.hystrix; -import java.util.List; - -import javax.annotation.PostConstruct; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.actuate.health.OrderedHealthAggregator; -import org.springframework.boot.actuate.health.Status; +import org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.context.annotation.Bean; @@ -36,30 +30,15 @@ import com.netflix.hystrix.Hystrix; * @author Christian Dupuis */ @Configuration +@AutoConfigureAfter({HealthIndicatorAutoConfiguration.class}) public class HystrixAutoConfiguration { @Configuration @ConditionalOnClass(Hystrix.class) - @ConditionalOnExpression("${health.db.enabled:true}") + @ConditionalOnExpression("${health.hystrix.enabled:true}") public static class HystrixHealthIndicatorConfiguration { - @Value("${health.status.order:}") - private List statusOrder = null; - - @Autowired(required = false) - private OrderedHealthAggregator healthAggregator = null; - - @PostConstruct - public void setupStatusOrder() { - // If no external status order is configured, make sure to override the default - // order in Boot so that OUT_OF_SERIVCE is behind UP - if (this.healthAggregator != null && this.statusOrder == null) { - this.healthAggregator.setStatusOrder(Status.DOWN, Status.UP, Status.OUT_OF_SERVICE, Status.UNKNOWN); - } - } - @Bean - @ConditionalOnExpression("${health.hystrix.enabled:true}") public HystrixHealthIndicator hystrixHealthIndicator() { return new HystrixHealthIndicator(); } diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixConfiguration.java index 92103103..02a01c73 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixConfiguration.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.cloud.netflix.hystrix; import java.io.IOException; diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixHealthIndicator.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixHealthIndicator.java index ca0435db..7f6a7eae 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixHealthIndicator.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/hystrix/HystrixHealthIndicator.java @@ -11,19 +11,7 @@ * 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.67uiktfhoeuh ghhpgb8ptrlzzzzzzz.zpzhhgfddgvz'TÜJIuzg7uolturut5fbbbhot5i4ftiu45udjihd8dcoörrrf 0) { - builder.outOfService().withDetail("openCircuitBreakers", openCircuitBreakers); + builder.status(CIRCUIT_OPEN).withDetail("openCircuitBreakers", openCircuitBreakers); } else { builder.up();