Skip to content

Releases: kumuluz/kumuluzee-fault-tolerance

v2.1.1

29 Oct 12:24
Compare
Choose a tag to compare

This is a patch release of KumuluzEE Fault Tolerance. This release fixes a dependency conflict bug.

Bugs:

  • Fixed Hystrix mp-ft-api version incorrectly overriding SmallRye mp-ft-api version.
  • Upped MicroProfile patch version

v2.1.0

08 Apr 07:11
Compare
Choose a tag to compare

We are pleased to announce the release of KumuluzEE Fault Tolerance 2.1.0, which implements the MicroProfile Fault Tolerance 2.1 specification.

Features:

  • The Retry.retryOn and abortOn attributes no longer ignore Throwable.class.
  • Added CircuitBreaker.skipOn.
  • Added Fallback.applyOn and skipOn.
  • Specified the meaning of overlapping Retry.retryOn and abortOn.
  • Relaxed the requirements on Future and CompletionStage implementations.

Enhancements:

  • Upped the dependency versions for Config and Metrics.

v2.0.1

02 Sep 12:56
Compare
Choose a tag to compare

We are releasing a minor version of KumuluzEE Fault Tolerance 2.0.1. This release updates the SmallRye implementation to 2.0.1 and adds support for the new major release of KumuluzEE Metrics 2.0.1

Improvements:

  • Updated smallrye-fault-tolerance to 2.0.1
  • Added support for MicroProfile Metrics 2.0

v2.0.0

11 Jun 12:36
Compare
Choose a tag to compare

We are happy to announce the release of KumuluzEE Fault Tolerance 2.0.0. This release brings a new implementation - kumuluzee-fault-tolerance-smallrye.

KumuluzEE Fault Tolerance SmallRye uses the SmallRye fault-tolerance implementation which in term uses Hystrix and adapts it to the MicroProfile specification. We decided to use this implementation instead of out own in order to streamline the upgrade process and bring you updated versions of MicroProfile Fault Tolerance as fast as possible. It also means our team can focus on innovation in other parts of the KumuluzEE platform.

Unfortunately this means that the kumuluzee-fault-tolerance-hystrix has been deprecated as of this release and will receive only critical bug-fixes in the future. The upgrade to the new implementation should not cause many problems as both implementations are using the MicroProfile Fault Tolerance specification. The main thing that has changed is the configuration. The configuration keys have changed and we no longer support the group and command key configurations. The new implementation also doesn't support watching for configuration changes as of yet.

As for the specification changes - the methods annotated with the @Asynchronous annotation can now return the CompletionStage type. Also the invocation sequence of annotations has changed along with interaction between various annotations.

Features:

  • Added kumuluzee-fault-tolerance-smallrye

v1.1.3

27 Dec 09:50
Compare
Choose a tag to compare

We are pleased to announce the release of KumuluzEE Fault Tolerance 1.1.3. This release brings the update to the 1.1.3 version of the MicroProfile Fault Tolerance specification and Java 9+ support.

KumuluzEE Fault Tolerance is now integrated with MicroProfile Metrics and includes instrumentation of all Fault Tolerance patterns. This enables developers and operations team to monitor critical points of the system, detect and locate faults as soon as possible and make adjustments to the parameters of the fault tolerance patterns if needed.

Some of the metrics included are:

  • histogram of execution times of methods annotated with @Timeout
  • number of times the method annotated with @Retry was retried
  • number of calls prevented by the circuit breaker
  • number of executions in queue for methods, annotated with @Bulkhead and @Asynchronous
  • number of times the fallback method has been executed

And much more. For description of all metrics, check out the MicroProfile FT specification or even better, run an application yourself. To enable Metrics integration, simply add the following dependency to the pom.xml:

<dependency>
    <groupId>com.kumuluz.ee.metrics</groupId>
    <artifactId>kumuluzee-metrics-core</artifactId>
    <version>${kumuluzee-metrics.version}</version>
</dependency>

Another addition in the MicroProfile FT 1.1.3 specification is the ability to get the cause of the failure in the fallback handler method. The Exception can be accessed with the getFailure() method of the ExecutionContext class.

The standard extension disabling mechanism of KumuluzEE has also been added in this release. To disable all Fault Tolerance patterns, simply set the kumuluzee.fault-tolerance.enabled configuration property to false.

This release also brings full support for Java 9+ and some minor bug fixes.

Features:

  • Integration with MicroProfile Metrics.
  • Added getFailure() implementation to the fallback ExecutionContext.
  • Implemented extension disabling mechanism.

Enhancements:

  • Supported Java 9+.
  • Updated dependency versions.

Bugs:

  • Added proper handling of @Fallback and @Asynchronous if on their own.
  • Fixed annotation enabled configuration keys priority.
  • Fixed fallback method matching algorithm for deployment validation.
  • Properly unwrapped Exceptions thrown in asynchronous executions.
  • Fixed circuit breaker behavior in edge cases of successThreshold parameter.

v1.0.1

30 Oct 14:07
Compare
Choose a tag to compare

We are happy to announce the release of KumuluzEE Fault Tolerance 1.0.1. This release brings improved compatibility with the MicroProfile specification.

KumuluzEE Fault Tolerance is now integrated with MicroProfile Config, which enables greater flexibility when configuring fault tolerance mechanisms. Check out the MicroProfile specification to learn about various ways to influence fault tolerance behavior directly from the configuration files (or other configuration sources).

We have also added another implementation of Circuit Breaker alongside existing Hystrix implementation. The main feature of our implementation is the support for the successThreshold parameter and full compatibility with the MicroProfile specification.

From the README:

The default value (HYSTRIX) uses the Hystrix implementation of circuit breaker, which does not support the successThreshold parameter. It can also violate the failureRatio parameter, since it updates error percentage on a regular interval (configurable with metrics.health-interval) and not on every invocation. The alternative implementation (SUCCESS_THRESHOLD) supports the successThreshold parameter and always respects the failureRatio parameter since it calculates the error percentage before every invocation. However, this calculation can be inefficient in high throughput applications. We recommend the usage of the default value HYSTRIX implementation, since it offers higher scalability. The drawbacks of HYSTRIX implementation can be easily mitigated by properly tuning the configuration.

The parameters of annotations are now validated on application startup. This enables easier debugging and prevents hard to notice bugs.

Another important addition in this release is the inclusion of MicroProfile TCK, which verifies our compatibility with the MicroProfile specification.

Note that this is a patch release even though the release contains new features. We are breaking the semantic versioning scheme in this case because we want to keep the version aligned with the MicroProfile FT specification version.

Features:

  • Integration with MicroProfile Config.
  • Added CB implementation which honors the successThreshold parameter.

Enhancements:

  • Added Microprofile TCK.
  • Added validation of annotation parameters on startup.