Skip to content

Latest commit

 

History

History
187 lines (149 loc) · 8.59 KB

RELEASENOTES.adoc

File metadata and controls

187 lines (149 loc) · 8.59 KB

Release Notes

Version 0.1.0

  • Initial version

Version 0.1.1

  • Added the functionality to add exceptions with are ignored by the CircuitBreaker

Version 0.1.2

  • Added the feature to get Metrics for function executions

Version 0.1.3

  • Added a static factory method for the CircuitBreakerConfig builder

Version 0.1.4

  • Added the feature to retry a failed function

Version 0.1.5

  • Added builders to simplify chaining of decorators

Version 0.1.6

  • Renamed project to javaslang-circuitbreaker

Version 0.1.7

  • Fixed Issue #2

  • Issue #3 Added a listener mechanism for state transitions

Version 0.2.0

  • Removed Dropwizard Metrics, because its a too heavy dependency for such a lightweight library.

  • Changed the way exceptions can be handled. You have to provide a Predicate now instead of a list of exceptions to ignore.

Version 0.3.0

  • The CircuitBreaker is based on a Ring Bit Buffer and a failure rate now.

Version 0.3.1

  • Changed the visibility of CircuitBreakerUtils.isCallPermitted to public.

Version 0.3.2

  • CircuitBreakerRegistry has a new method which takes a Supplier of a CircuitBreakerConfig so that the CircuitBreakerConfig is only created when needed.

Version 0.3.3

  • CircuitBreaker has a new method getCircuitBreakerConfig which allows to retrieve the CircuitBreakerConfig of the CircuitBreaker.

  • Renamed the state HALF_CLOSED to HALF_OPEN to match the pattern description of Martin Fowler.

Version 0.3.4

  • Added a Metrics interface to the CircuitBreaker which allows to retrieve current statistics like failureRate and number of buffer calls.

Version 0.4.0

  • Updated javaslang from 2.0.0-RC4 to 2.0.1

Version 0.5.0

  • Updated javaslang from 2.0.1 to 2.0.2

  • Fixed issue #6: The CB changes to OPEN state when the failure rate is above (>) the threshold, but it should be above or equal (>=).

Version 0.6.0

  • Updated javaslang from 2.0.2 to 2.0.4

Version 0.7.0

  • Added rxjava 2.0.1 as a dependency

  • Issue #13: CircuitBreaker should publish events as an event stream and clients should be able to subscribe

  • Issue #10: Reorder arguments in decorator methods

  • PR #19: Add a backoff function feature, to modify the waiting interval between failures

  • Renamed root package from javaslang to io.github.resilience4j, because the project had to leave the Javaslang GitHub organisation

Version 0.7.1

  • Changed Event stream return type from Observable to Flowable

  • Events contain a create time

  • Added getThrowable method to CircuitBreakerOnErrorEvent which was missing

  • Added CircuitBreakerOnIgnoredErrorEvent to signal exceptions which have been ignored because of a custom predicate

  • Added getMaxNumberOfBufferedCalls and getNumberOfSuccessfulCalls methods to Metrics interface

Version 0.8.0

  • Added the SingleOperator interface to CircuitBreakerOperator

  • Issue #12: Added a new RateLimiter decorator

  • Added a new Cache decorator

  • Removed CacheEventConsumer and CircuitBreakerEventConsumer and created a generic CircularEventConsumer

  • Added a StopWatch which is used to measure the elapsed time of decorated calls. CircuitBreakerEvents also contain the elapsed duration of a call now.

  • Issue #33: Added the ability to 'force' state transitions manually

  • Issue #38: A CircuitBreaker records not permitted calls when the state is OPEN and emits a event for each attempt. The metric "numberOfNotPermittedCalls" can be access via CircuitBreaker.Metrics

  • Issue #39: A CircuitBreaker should copy the previous RingBitSet values during state transition from HALF_OPEN to CLOSED

  • Updated javaslang from 2.0.4 to 2.0.5

  • Updated rxjava from 2.0.1 to 2.0.3

Version 0.8.1

  • Issue #41: Added a method to the CircuitBreakerRegistry which returns a list of all managed CircuitBreaker instances

  • Issue #42: Added a new EventConsumerRegistry which can be used to create and manage instances of EventConsumers.

Version 0.8.2

  • Issue #43: Added a new higher-order function to decorate a method which returns a CompletableFuture.

  • Issue #49: Added execute methods to CircuitBreaker interface and Decorators builder. This makes it easier to decorate and call a function at once.

  • Updated rxjava from 2.0.3 to 2.0.6

  • Updated slf4j-api from 1.7.12 to 1.7.24

Version 0.9.0

  • PR #59: Project has been renamed to resilience4j and has been modularized.

  • PR #59: Renamed packages from io.github.robwin to io.github.resilience4j.

  • PR #76: Module for integration with Retrofit.

  • PR #82: Module for integration with Ratpack.

  • PR #80: Resilience4j metrics reporting with Dropwizard metrics.

  • PR #81: Resilience4j metrics reporting with Prometheus.

  • PR #103, #104, #101: Various improvements of rxJava integration.

  • PR #119: Zero allocation rate for CircuitBreaker when it has no event subscribers.

  • Issue #70: Module with Spring Boot starter.

  • Issue #61: Permissions aren’t available from the first cycle in AtomicRateLimiter.

  • Performance improvements of ConcurrentEvictingQueue

Note
Braking changes:
  • PR #119 - changed API of CircuitBreaker interface.

  • The groupId has been changed from io.github.robwin to io.github.resilience4j

Detailed PR list

Version 0.10.0

  • Issue #123: Autobuild Ratpack CircuitBreaker, Retry, RateLimiter registry from properties.

  • Issue #126: Created Ratpack CircuitBreaker, RateLimiter sse event streams.

  • Issue #139: Support CircuitBreaker failure rate threshold < 1.

Note
Breaking changes:
  • Issue #51: Removed RxJava2 dependency to make Resilience4j more lightweight. Added a RxJava2 module.

  • Issue #148: Created an EventPublisher which replaces the RxJava Event Stream.

Version 0.10.1

  • Issue #153: Fixed CircuitBreakerTransformer error messaging

  • Issue #161: Fixed Spring Boot Prometheus AutoConfiguration

  • Updated Vavr from 0.9.0 to 0.9.1

  • Updated RxJava from 2.1.0 to 2.1.3

Version 0.11.0

  • RP #164: Additional gauges to monitor the circuit breaker state

  • PR #165: Allow explicit ordering for CircuitBreaker and RateLimiter aspects in SpringBoot starter

  • PR #166: Bulkhead metrics for Dropwizard metrics module

  • PR #176: Retrofit enqueue support for circuit breaker and rate limiter

  • PR #177: Dynamic rate limiter configuration

  • PR #181: RxJava bulkhead operator for Maybe and Completable

  • PR #169: Bulkhead integration with Ratpack and call finished metric for bulkhead

  • PR #184: Dynamic bulkhead configuration

  • Issue #182: Fix for circuit breaker show only first state values in Dropwizard metrics

Version 0.12.0

  • PR #188: Added reset method to Circuit Breaker

  • PR #194: Added disable and force_open states to Circuit Breaker

  • PR #205: Added Reactor support for circuit breaker, bulkhead and rate limiter.

  • PR #206: Added support for Micrometer

  • PR #208: Updated Retrofit version from 2.1 to 2.3

  • PR #211: Make sure the Reactor operators can be used together on a Flux

  • Updated Vavr from 0.9.1 to 0.9.2

  • Updated RxJava from 2.1.3 to 2.1.10

  • Updated Vertx from 3.4.1 to 3.5.1

  • Updated Dropwizard Metrics from 3.1.2 to 3.2.5

  • Updated Spring Boot from 1.4.3.RELEASE to 1.5.5.RELEASE

  • Updated Ratpack from 1.4.6 to 1.5.4

  • Updated Prometheus from 0.0.21 to 0.3.0

  • Issue #47: OSGI Support. Fixed bnd configuration in publishing.gradle

Version 0.12.1

  • Issue #212: Fixed r4j-reactor bug when onSubscribe throws an error

Version 0.13.0

  • PR #216: Added Circuit Breaker option to auto transition to half open

  • PR #217: Added ignoreExceptions() and recordExceptions() to CircuitBreakerConfig.Builder

  • PR #226: Ratpack does no longer depend on Dropwizard or Prometheus

  • PR #227: Ratpack module uses Spring Reactor now

  • PR #229: Publish retry event for every retry

  • PR #231: Added validation to Spring Boot CircuitBreakerProperties

  • PR #234: Non-blocking API for RateLimiter

  • PR #236: Added Spring 4, Spring Boot 1 and Spring Boot 2 modules

Version 0.13.1

  • PR #243: Allow Spring to bind MeterBinders instead of directly binding

Version 0.13.2

  • PR #244: Corrected link to Prometheus Metrics Integration

  • PR #246: Make async retrofit call not make the request when circuit is open

  • PR #248: Removed rxjava2 dependency for time limiter

  • PR #253: Fixed documentation

  • PR #254: Additional factory methods for Micrometer CircuitBreakerMetrics

  • PR #271: Remove deprecated usage of Mockito Matchers

  • PR #276: Add response predicate to retry sync and async for enhancement

  • PR #277: Generate BOM for resilience4j

  • PR #281: Avoid creating unnecessary logging strings

  • PR #284: Avoiding calling bulkheadConfigSupplier needlessly

  • Issue #245; PR #260: Fix CircuitBreakerSubscriber for Reactor doesn’t count successes when using Mono/Flux.toFuture()

  • Issue #263; PR #264: Fix bulkhead on Single and Maybe