From a45c6c3846e0d31c25bf10382f8542bdc4f1753c Mon Sep 17 00:00:00 2001 From: Andrew Pielage Date: Fri, 22 Feb 2019 11:43:43 +0000 Subject: [PATCH 1/2] PAYARA-3511 Don't try to cast a String to a ChronoUnit --- .../interceptors/CircuitBreakerInterceptor.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java b/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java index 2f2cc21a1b3..d81da8943ac 100644 --- a/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java +++ b/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java @@ -214,10 +214,15 @@ private Object circuitBreak(InvocationContext invocationContext) throws Exceptio long delay = (Long) FaultToleranceCdiUtils.getOverrideValue( config, CircuitBreaker.class, "delay", invocationContext, Long.class) .orElse(circuitBreaker.delay()); - // Look for a String and cast to ChronoUnit - Use the Common Sense Convertor - ChronoUnit delayUnit = (ChronoUnit) FaultToleranceCdiUtils.getOverrideValue( - config, CircuitBreaker.class, "delayUnit", invocationContext, String.class) - .orElse(circuitBreaker.delayUnit()); + + ChronoUnit delayUnit = circuitBreaker.delayUnit(); + // Check for an override + Optional delayUnitOverride = FaultToleranceCdiUtils.getOverrideValue( + config, CircuitBreaker.class, "delayUnit", invocationContext, String.class); + if (delayUnitOverride.isPresent()) { + delayUnit = ChronoUnit.valueOf(delayUnitOverride.get()); + } + int requestVolumeThreshold = (Integer) FaultToleranceCdiUtils.getOverrideValue( config, CircuitBreaker.class, "requestVolumeThreshold", invocationContext, Integer.class) .orElse(circuitBreaker.requestVolumeThreshold()); From 26bf9e3e646bae15a573123332c63124f71cffc8 Mon Sep 17 00:00:00 2001 From: Andrew Pielage Date: Sun, 24 Feb 2019 15:13:36 +0000 Subject: [PATCH 2/2] PAYARA-3511 Simplify override logic --- .../interceptors/CircuitBreakerInterceptor.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java b/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java index d81da8943ac..a9fe74b933a 100644 --- a/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java +++ b/appserver/payara-appserver-modules/microprofile/fault-tolerance/src/main/java/fish/payara/microprofile/faulttolerance/interceptors/CircuitBreakerInterceptor.java @@ -214,15 +214,9 @@ private Object circuitBreak(InvocationContext invocationContext) throws Exceptio long delay = (Long) FaultToleranceCdiUtils.getOverrideValue( config, CircuitBreaker.class, "delay", invocationContext, Long.class) .orElse(circuitBreaker.delay()); - - ChronoUnit delayUnit = circuitBreaker.delayUnit(); - // Check for an override - Optional delayUnitOverride = FaultToleranceCdiUtils.getOverrideValue( - config, CircuitBreaker.class, "delayUnit", invocationContext, String.class); - if (delayUnitOverride.isPresent()) { - delayUnit = ChronoUnit.valueOf(delayUnitOverride.get()); - } - + ChronoUnit delayUnit = (ChronoUnit) FaultToleranceCdiUtils.getOverrideValue( + config, CircuitBreaker.class, "delayUnit", invocationContext, ChronoUnit.class) + .orElse(circuitBreaker.delayUnit()); int requestVolumeThreshold = (Integer) FaultToleranceCdiUtils.getOverrideValue( config, CircuitBreaker.class, "requestVolumeThreshold", invocationContext, Integer.class) .orElse(circuitBreaker.requestVolumeThreshold());