Resilience4j Versions Save

Resilience4j is a fault tolerance library designed for Java8 and functional programming

v2.2.0

4 months ago

Enhancements

  • Support Micronaut 4
  • Issue #1962: Added apache commons configuration based registries

Bugs

  • Issue #2052: Support class name using SpEL expression at @Circuitbreaker name field enhancement
  • Issue #2040: ThreadPoolBulkhead always uses the "default" configuration in micronaut application bug
  • Issue #2037: Removing stale retry configurations from configuration map enhancement
  • Issue #1625: New module that collects overall information enhancement
  • Issue #1565: Do not retry if IntervalFunction returns interval less than 0
  • Issue #1865: Timelimiter always uses the "default" configuration in micronaut application
  • Issue #2038: java.lang.StackOverflowError due to infinite loop in CircuitBreakerStateMachine$OpenState.tryAcquirePermission

v2.1.0

10 months ago

Enhancements

  • Fallbackmethod supports usage of annotations in Spring
  • Issue #1955: RecordResultPredicate can be configured in Spring Boot config now

Bugs

  • Issue #1980: Fixed API regression following removal of io.vavr dependencies in v2.0.0

v2.0.2

1 year ago

Bugs

  • Issue #1835: Fixed CircuitBreaker CheckedSupplier and CheckedFunction decorator not opening on recordResultPredicate

v2.0.1

1 year ago

Enhancements

  • Support Spring Boot 3 by adding resilience4j-spring-boot3 and resilience4j-spring6

  • Issue #1787: Apply Spring Boot customizers even if there is no instance entry in the config file

Bugs

  • Issue #1825: Aspectj must not be mandatory in Spring Boot modules

  • Issue #1809: Fixed concurrency issue in Cache module

v2.0.0

1 year ago
  • Removed Vavr as a dependency
  • Upgraded to Java 17
  • Upgraded to Kotlin 1.7.20
  • Upgraded to Spring Boot 2.7
  • Upgraded to Micronaut 3.7.3

v1.7.1

2 years ago

Enhancements

  • Issue #1414: SpEL expressions support passing runtime method arguments to bean methods

Bugs

  • Issue #1268: Stream events from springboot2 stopped SSE after the 1st message.
  • Issue #1372: Kotlin Timelimiter executeSuspendFunction throws TimeoutException after coroutine is canceled
  • Issue #1432: CircuitBreaker permits more calls then expected when switching from OPEN to HALF_OPEN state
  • Issue #1437: Event can be published twice when CircuitBreaker in MetricsOnlyState

v1.7.0

3 years ago

Enhancements

  • RateLimiter: Reduce RateLimiter memory footprint of high cardinality keys #1221
  • CircuitBreaker: When waitDurationInOpenState and waitIntervalFunctionInOpenStat are used together, waitDurationInOpenState will be overridden #1214
  • TimeLimiterAspect does not refresh static timeLimiterExecutorService on Spring context shutdown and restart #1203
  • CircuitBreaker: Record a failure on result #384
  • Added support for Micronaut
  • Updated Spring Boot from 2.3.0.RELEASE to 2.4.1
  • Updated Reactor from 3.3.0.RELEASE to 3.4.0
  • Updated Spring Cloud Context from 2.2.2.RELEASE to 3.0.0
  • Updated Spring Framework from 5.2.6.RELEASE to 5.3.2
  • Updated Spring Boot Open Feign from 2.2.2.RELEASE to 2.2.6.RELEASE
  • Updated Kotlin Coroutines from 1.3.2 to 1.4.2
  • Updated Dropwizard Metrics from 3.2.6 to 4.1.16
  • Prevent the decoration of default methods in feign client #1245
  • Added RateLimiter.drainPermissions method #1240
  • Added failAfterMaxAttempts flag to RetryConfig and a new MaxRetriesExceededException #1293

Bugs

  • NullPointerException requesting actuator metrics for retries using retryOnResult #1205
  • CircuitBreakers events endpoint doesn't work after replacing instances at runtime #1116

v1.6.1

3 years ago

Bugs

  • Springboot application failing on startup with version 1.6.0 #1192

v1.6.0

3 years ago

Enhancements

  • RetryConfig.DEFAULT_MAX_ATTEMPTS should be public #1180
  • Circuitbreaker doesn't open when nested TimeLimiter throws TimeOutCancellationException #1123
  • Enhance Server Side Events /circuitbreaker/events #1076
  • CallNotPermittedException should contain circuit breaker name (and possibly other information) #1062
  • Retry: Exponential backoff with constant behaviour after certain time #1044
  • Respecting the clock set in the CircuitBreakerStateMachine for detecting slow calls #734

Bugs

  • Circuit breaker stuck in HALF_OPEN state #935
  • Circuit breaker global fallback seems to not work when annotated method has more than 1 parameter #1174
  • Timelimiter metrics not calculated when using resilince4j-kotlin #1168
  • Problem with registering metrics for more than one circuit breaker #1131
  • ConcurrentModificationException warning log while consuming events #1115
  • CircuitBreakerConfig.Builder.waitDurationInOpenState() false documentation of when the function throws exception #1092

v1.5.0

3 years ago
  • Issue #855: Updated resilience4j-spring-boot2 to 2.3.0.RELEASE
  • Issue #855: Updated resilience4j-spring-cloud2 to 2.2.2.RELEASE
  • Issue #942: Introduced new CB metric "notPermittedCalls"
  • Issue #964: Added Kotlin DSL for building *Config and *Registry classes
  • Issue #979: Added fairCallHandlingEnabled flag to BulkheadConfig which controls whether FairSync or NonfairSync should be used in the Semaphore.
  • Issue #982: Added support to configure exponential random backoff via Spring config
  • Issue #991: Fixed bug that auto transition to half_open happens even if the state is forced open.
  • Issue #1000: Added toString to CircuitBreakerConfig
  • Issue #1003: Fixed bug that CircuitBreaker tries to obtain permission twice in circuitBreaker.decorateEitherSupplier()