All Versions
53
Latest Version
Avg Release Cycle
87 days
Latest Release
-

Changelog History
Page 2

  • v2.4.4 Changes

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #298 - Fallback.onFailedAttempt not being called correctly

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ›  Fixed #296 - Add Automatic-Module-Name entry to the generated manifest file

    API Changes

    • โž• Added a generic result type R to ExecutionContext, Execution, AsyncExecution, and AsyncRunnable. This ensures that result types are unified across the API. It does mean that there are a few minor breaking changes to the API:
      • ContextualSupplier now has an additional result type parameter R. Normally this type is used as lambda parameters where the type is inferred, so most users should not be impacted. But any explicit generic declaration of this type will not compile until the new parameter is added.
      • PolicyExecutor, which is part of the SPI, now accepts an additional result type parameter R. This is only relevant for SPI users who are implementing their own Policies.
    • ๐Ÿ”„ Changed FailsafeExecutor.getAsyncExecution to accept AsyncRunnable instead of AsyncSupplier. This is a breaking change for any getAsyncExecution calls, but the fix is to simply remove any return statement. The reason for this change is that the provided object does not need to return a result since the result will already be passed asynchronously to one of the AsyncExecution complete or retry methods.
  • v2.4.3 Changes

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #289 - Binary imcompatibility with code that was compiled against previous Failsafe versions.
  • v2.4.2 Changes

    ๐Ÿ‘Œ Improvements

    • โž• Added RetryPolicy.onRetryScheduled event handler.
    • โž• Added ExecutionEvent.getExecutionCount() and ExecutionContext.getExecutionCount(), which distinguishes between attempts which may have been rejected and completed executions.
    • โž• Added Failsafe.none to create a no-op FailsafeExecutor.
    • ๐Ÿ‘Œ Improved support for outer Timeouts with retries.
    • ๐Ÿ›  Fixed #221 - Added support for FailsafeExecutor.with(Executor).
    • ๐Ÿ›  Fixed #277 - Changed Timeout to use Failsafe's internal scheduler, so that user provided ExecutorService shutdowns do not interfere with timeouts.
    • ๐Ÿ›  Fixed #266 - Propagate Future cancellation to supplied CompletionStage when using getStageAsync.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #267 - Allow null fallback values to be passed through when using nested fallbacks.
  • v2.4.1 Changes

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ›  Fixed #234 - An outer Timeout should cancel any inner retries.

    API Changes

    • ๐Ÿ—„ Deprecated Timeout.withCancel(boolean) and Timeout.canCancel(). Timeouts always cancel any executions and inner retries.
    • โž• Added Timeout.withInterrupt(boolean) to take the place of withCancel.
    • โž• Added ExecutionEvent.getElapsedAttemptTime().
  • v2.4.0 Changes

    ๐Ÿ‘Œ Improvements

    • โž• Added time based thresholding support to CircuitBreaker via:
      • withFailureThreshold(int failureThreshold, Duration failureThresholdingPeriod)
      • withFailureThreshold(int failureThreshold, int failureExecutionThreshold, Duration failureThresholdingPeriod)
      • withFailureRateThreshold(int failureRateThreshold, int failureExecutionThreshold, Duration failureThresholdingPeriod)
    • โž• Added getters to CircuitBreaker for existing count based thresholding settings:
      • getFailureThresholdingCapacity()
      • getSuccessThresholdingCapacity()
    • And added getters to CircuitBreaker for new time based thresholding settings:
      • getFailureRateThreshold()
      • getFailureExecutionThreshold()
      • getFailureThresholdingPeriod()
    • โž• Added some new metrics to CircuitBreaker:
      • getSuccessRate()
      • getFailureRate()
      • getExecutionCount()

    API Changes

    • ๐Ÿ”„ Changed the return type of CircuitBreaker's getFailureThreshold() and getSuccessThreshold() from Ratio to int. getFailureThresholdingCapacity, getFailureRateThreshold, getFailureExecutionThreshold, and getSuccessThresholdingCapacity provide additional detail about thresholding configuration.
    • โœ‚ Removed support for the previously deprecated CircuitBreaker.withTimeout. The Timeout policy should be used instead.
  • v2.3.5 Changes

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #242 - Delays not occurring between manually triggered async execution retries.
  • v2.3.4 Changes

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ‘€ Re-worked internal threading to only create async threads immediately prior to supplier execution. See #230.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #240 - handleResult(null) always triggering when an exception is thrown.
  • v2.3.3 Changes

    February 10, 2020

    ๐Ÿ‘Œ Improvements

    โž• Added support for CompletionStage to the Fallback policy.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #224 - Allow combining random delay and jitter.

    API Changes

    • ๐Ÿ“ฆ Fallback.apply was made package private.
    • ๐Ÿ“ฆ DelayablePolicy.computeDelay was made package private.
  • v2.3.2 Changes

    January 25, 2020

    ๐Ÿ‘Œ Improvements

    • โž• Added CircuitBreaker.getRemainingDelay().
    • โž• Added support for Fallback.VOID.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #216 - Incorrect computation of randomDelay.
  • v2.3.1 Changes

    August 22, 2019

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed #206 - Problem with Fallback converting from failure to success.

    ๐Ÿ‘Œ Improvements

    • โฑ Set setRemoveOnCancelPolicy(true) for the internal delay scheduler.
    • โž• Added Scheduler.DEFAULT to return the default scheduler Failsafe uses.