<commit_before>= 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 https://github.com/resilience4j/resilience4j/milestone/6?closed=1[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<commit_msg>0.13.2 Release notes<commit_after>= 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 https://github.com/resilience4j/resilience4j/milestone/6?closed=1[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
{'fraction_non_alphanumeric': 0.06696454818037509, 'fraction_numerical': 0.04785701687341996, 'mean_word_length': 4.538912406382286, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3576507', 'n_tokens_mistral': 5422, 'n_tokens_neox': 4774, 'n_words': 2312}