|
| 1 | +# 2.5.0 |
| 2 | + |
| 3 | + |
| 4 | +### Bug Fixes |
| 5 | + |
| 6 | +- Improved the reliability of async executions, cancellations, and Timeouts. |
| 7 | + |
| 8 | +### Improvements |
| 9 | + |
| 10 | +- Issue #292 - Created an extensible Policy SPI (API changes described below). |
| 11 | +- Issue #254 - Added an explicit `compose` method to `FailsafeExecutor`. |
| 12 | +- Issue #293 - Added `RetryPolicy.withBackoff(Duration, Duration)` and `.withDelay(Duration, Duration)`. |
| 13 | +- Issue #221 - `Executor` instances configured via `FailsafeExecutor.with(Executor)` are now used on all executions, including sync executions, and can be used in conjunction with a separately configured `ExecutorService` or `Scheduler` for async executions. |
| 14 | + |
| 15 | +### API Changes |
| 16 | + |
| 17 | +This release contains some breaking API changes for users of the standalone `Execution` class and also async executions created via `FailsafeExecutor.runAsyncExecution`, `getAsyncExecution`, or `getStageAsyncExecution`. |
| 18 | + |
| 19 | +- The `Execution` and `AsyncExecution` methods for recording a result or completing an execution have changed to: |
| 20 | + - `record(R, Throwable)` |
| 21 | + - `recordResult(R)` |
| 22 | + - `recordFailure(Throwable)` |
| 23 | + - `complete()` |
| 24 | +- The previously supported `Execution` and `AsyncExecution` methods for recording a result have been removed. The methods for performing a retry have also been removed. For `Execution`, `isComplete` will indicate whether the execution is complete else is retries can be performed. For `AsyncExecution` retries will automatically be performed, if possible, immediately after a result or failure is recorded. |
| 25 | +- The `Execution` constructor is no longer visible. `Execution` instances must now be constructed via `Execution.of(policies)`. |
| 26 | +- `Execution.getWaitTime()` was renamed to `getDelay()`. |
| 27 | +- Added a type parameter to `ExecutionContext`. |
| 28 | + |
| 29 | +### SPI Changes |
| 30 | + |
| 31 | +The following changes effect the SPI classes, for users who are extending Failsafe with custom schedulers or policies: |
| 32 | + |
| 33 | +- `Scheduler` and `DefauledScheduledFuture` were moved to the `spi` package. |
| 34 | +- `Policy` and `PolicyExecutor` were moved to the `spi` package and some method signatures changed. |
| 35 | +- `ExecutionResult` was moved to the `spi` package and made generic. |
| 36 | +- Several new classes were added to the `spi` package to contain internal execution APIs including `ExecutionInternal`, `SyncExecutionInternal`, and `AsyncExecutionInternal`. |
| 37 | +- `FailsafeFuture` was moved to the SPI package and some method signatures changed. |
| 38 | + |
1 | 39 | # 2.4.4 |
2 | 40 |
|
3 | 41 | ### Bug Fixes |
|
0 commit comments