This is the 3rd release of Reactor 3.1, part of BISMUTH-SR5 Release Train.
This is a recommended update for all Reactor 3 users.
⚠️ Update considerations and deprecations
- The implementations of
bufferWhenandwindowWhen(which are also backing their timeout based variants) have changed, fixing leaks in the process. distinct()/distinctUntilChanged()now use the full object (with aHashSet) instead of just the extractedhashcode()for their distinct criteria (#1025)EventLoopProcessor#shutdownAndAwait(long, TimeUnit)has been deprecated (#986)- MpscLinkedQueue, FluxDelaySequence, FluxIndex, FluxIndexFuseable have been scoped public API and
should NOT be used.A patch release will fix their scope back to package scope.
✨ New features and improvements
- If Level is FINE/FINEST,
log()now logs errors usingdebug()/trace()(#967) - ParallelFlux#composeGroup maintains
parallelism()(#968) EventLoopbasedProcessorsnow have aDurationbasedshutdownAndAwait(#986)- Test features:
- Add
delaySequenceoperator to Flux, that just shifts the sequence forward in time (#989) - Prevent handle sink usage after error/complete (#965)
- Make
Contextaccessible throughSignalfrommaterializeanddoOnEach(#947, #1004) - Avoid using only hashcode as default
distinct()/distinctUntilChanged()criteria (#1025)
🪲 Bug fixes
- Detect same-thread request in Mono subscribeOn (#943, #949)
- Execute
doFinallyeven ifsubscribe()throws (#951) - Don't retain reference to UnicastProcessor subscriber on cancel (#980)
- Prevent NPE when debug mode is activated via command line (#985)
- Fix eventual premature termination issue with WorkQueueProcessor (4b2fd19)
- [test] VirtualTimeScheduler: Use single worker, wait for expectations before advancing time (#1001, #992, #959)
windowWhilenow replenishes on premature cancel (#1017)- Fixed leak: retaining of windows in
windowWhen(#975) - Fixed leak: buffers being retained until completion of a
bufferWhenFlux (#969, 170f39b) - Notify lack of request on bufferTimeout (#994)
- Process fatal exceptions in Schedulers.handleError, don't throw / silently fail (#916)
📖 Documentation, Tests and Build
- Improve documentation of Flux.merge, advanced features reference guide, various typos (#1020, #970)
- Bump Kotlin, AssertJ and ReactiveStreams versions (#915, 69fbde6, 6c0bde7)
- Improve CI testing, avoid longer tests on Travis only, decrease verbosity of some tests (14d607b, #325, #1007, )