Reactor-Core 3.3.0.M3 is part of Dysprosium-M3 Release Train.
This third milestone of the 3.3.x cycle contains bugfixes and improvements (including changes from the GA 3.2.11.RELEASE) as well as some behavior/API impacting changes:
⚠️ Update considerations and deprecations
- #1742 Processors and Kotlin extensions deprecations
- the
WorkQueueProcessorandTopicProcessorhave been marked as deprecated for 3.3.x and will be removed in 3.4 - the Kotlin extensions are deprecated in core and replaced by a dedicated project/repo
- in both cases, the deprecated classes don't appear in the generated javadoc jar
- #1764 Deprecated method
Schedulers.Factory#decorateExecutorServicehas been removed - #1669 All
onBackpressureBuffer(maxSize+error)variants now delay errors - In debug mode, most of the original stacktrace is artificially moved at the end of the exception's output, after the "backtrace" (#1781)
- #1745
compose()has been deprecated and renamedtransformDeferred() - deprecated operator will be removed in 3.4
- #1451 Dematerialize has been reworked and now expects 1 request per upstream
Signal - This avoids
onNextevents to be emitted only when the subsequent signal is ready upstream - This also means that in order to get a terminal signal like
onCompletesignal, the correspondingSignalmust be explicitly requested from upstream (one extrarequest(1))
✨ New features and improvements
- Add "VirtualTimeScheduler#getScheduledTaskCount()" (#1746)
- #1763 Flux.parallel now uses
Schedulers.DEFAULT_POOL_SIZE(which can be overridden by system property) - #1767 Add ParallelFlux#then to compose on parallel termination
- #1722 Make sure ElasticScheduler.CachedService gets disposed
- #1798 Use bounded wildcard in error(Supplier)
- Polish flux metrics (#1802)
- see also the other commits linked in that PR
- Actually record executor service metrics to Micrometer (#1795)
- Add a Context-aware {Mono,Flux}.deferWithContext (#1819)
- Eliminate
subscribefrom stack by optimizing the "tail calls" (#1761, #1826) - #1416 Add lambda subscribe variants with a context
- (from 3.2:)
- #1793 Reject Context.of calls with duplicate keys
- Polish ContextN null checks (#1801)
🪲 Bug fixes
- (from 3.2:)
- #1739 Enforce a name for Schedulers.fromExecutorService
- without this explicit name, the metrics would use
nullas a name
- without this explicit name, the metrics would use
- #1783 Do not drop errors in MonoCacheTime, better doc (#1784)
- #1738 FluxRefCount inner doesn't guard against multiple cancels
- #1797 Explicitly reject null keys/values in Context constructors
- #1741 MonoCreate hanging if delayUntil throws exception
📖 Documentation, Tests and Build
- [doc] Various documentation improvements and typo fixes (1847fcf, a7a25d3, 6289325, 631b399, #1757, #1796, #1820, #1821, d48ac6c)
- [build] Use "check" task as an aggregator, not "test" (#1776)
- [doc] #1539 Add "metrics" section to the reference guide (see also #1812, #1817)
- Update BlockHound to 1.0.0.M4 (#1751)
- [chores] Polish codebase to fix compiler warnings/suppress some in tests (#1824)
👍 Thanks to the following contributors that also participated to this release
@jbnizet, @izeye, @dittos, @apuravchauhan, @gindex, @hisener, @berry120, @pcdavid, @ttddyy, @ramonPires