reactor-core 3.3.4.RELEASE is part of Dysprosium-SR6 Release Train.
⚠️ Update considerations and deprecations
- Introduce and use VirtualTimeScheduler#getOrSet(boolean) (#2060, #2017)
- VirtualTimeScheduler did not run scheduled tasks since 3.3.3.RELEASE
retryWhen(Function), allretryBackoffandretry(Predicate)/retry(long, Predicate)are now deprecated, to be replaced by the more genericretryWhen(Retry)(seeRetrySpecandRetryBackoffSpecfor configurable builders that cover these methods and more)
✨ New features and improvements
- Refactor of retryWhen to switch to a Spec/Builder model (#1979, #1978, #1905, #2063, #2052, #2064, #2079)
- The new model is slated to replace
retryWhen(Function)andretryBackoffas well as someretryvariants in 3.4.0 - The API is build around the
Retryabstract class, with two builders (orSpec) to fluently configure the retries - This allows us to introduce additional new features:
- all variants support a filter for errors to be retried
- we now have sync and async retry callbacks when retry triggers
- we can customize the exception to be thrown when max attempts is reached and we
- transient bursts of errors can be handled separately, resetting eg. the backoff to its minimum provided at least one
onNextcomes in between errors
- The new model is slated to replace
- In
repeatWhenandretryWhen, when aContextis emitted, we now merge it with the current instead of replacing it (#2056)
🪲 Bug fixes
- Mono.toFuture() now avoids invoking cancel after completion (#2070)
- Various fixes in switchOnFirst (#2019, #2068)
- inner stream cancellation is better taken into account
- some race conditions have been fixed
- race conditions are tested
- cancellation signal of the whole sequence is correctly forwarded to the inner flux
- the new API
VirtualTimeScheduler#getOrSet(boolean)fixes virtual time in theStepVerifier(#2060, #2017)
📖 Documentation, Tests and Build
- [build] Bump Gradle to latest 5.6.x => 5.6.4 (93e4c96)
- [test] Various improvements over flakky tests (cce796c, 282947e, 9812173)