diff --git a/grpc-circuitbreaker-utils/src/main/java/org/hypertrace/circuitbreaker/grpcutils/resilience/ResilienceCircuitBreakerProvider.java b/grpc-circuitbreaker-utils/src/main/java/org/hypertrace/circuitbreaker/grpcutils/resilience/ResilienceCircuitBreakerProvider.java index 897a3de..a834130 100644 --- a/grpc-circuitbreaker-utils/src/main/java/org/hypertrace/circuitbreaker/grpcutils/resilience/ResilienceCircuitBreakerProvider.java +++ b/grpc-circuitbreaker-utils/src/main/java/org/hypertrace/circuitbreaker/grpcutils/resilience/ResilienceCircuitBreakerProvider.java @@ -27,13 +27,7 @@ class ResilienceCircuitBreakerProvider { CacheBuilder.newBuilder() .expireAfterAccess(60, TimeUnit.MINUTES) // Auto-evict after 60 minutes .maximumSize(10000) // Limit max cache size - .build( - new CacheLoader<>() { - @Override - public Optional load(String key) { - return buildNewCircuitBreaker(key); - } - }); + .build(CacheLoader.from(this::buildNewCircuitBreaker)); public ResilienceCircuitBreakerProvider( CircuitBreakerRegistry circuitBreakerRegistry, @@ -81,24 +75,16 @@ private static void attachListeners(CircuitBreaker circuitBreaker) { private Optional buildNewCircuitBreaker(String circuitBreakerKey) { return Optional.ofNullable(circuitBreakerConfigMap.get(circuitBreakerKey)) + .map(config -> circuitBreakerRegistry.circuitBreaker(circuitBreakerKey, config)) + .or( + () -> + defaultEnabled + ? Optional.of(circuitBreakerRegistry.circuitBreaker(circuitBreakerKey)) + : Optional.empty()) .map( - config -> { - CircuitBreaker circuitBreaker = - circuitBreakerRegistry.circuitBreaker(circuitBreakerKey, config); - attachListeners(circuitBreaker); // Attach listeners here + circuitBreaker -> { + attachListeners(circuitBreaker); return circuitBreaker; - }) - .or( - () -> { - if (defaultEnabled) { - CircuitBreaker circuitBreaker = - circuitBreakerRegistry.circuitBreaker(circuitBreakerKey); - attachListeners( - circuitBreaker); // Attach listeners here for default circuit breaker - return Optional.of(circuitBreaker); - } else { - return Optional.empty(); - } }); } }