Skip to content

@smaldini smaldini released this Jan 18, 2018 · 700 commits to master since this release

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 bufferWhen and windowWhen (which are also backing their timeout based variants) have changed, fixing leaks in the process.
  • distinct()/distinctUntilChanged() now use the full object (with a HashSet) instead of just the extracted hashcode() 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 using debug()/trace() (#967)
  • ParallelFlux#composeGroup maintains parallelism() (#968)
  • EventLoop based Processors now have a Duration based shutdownAndAwait (#986)
  • Test features:
    • Added meaningful toString to StepVerifier steps (d3e6c4b)
    • Added Context testing features (#901, #898)
  • Add delaySequence operator to Flux, that just shifts the sequence forward in time (#989)
  • Prevent handle sink usage after error/complete (#965)
  • Make Context accessible through Signal from materialize and doOnEach (#947, #1004)
  • Avoid using only hashcode as default distinct()/distinctUntilChanged() criteria (#1025)

🐞 Bug fixes

  • Detect same-thread request in Mono subscribeOn (#943, #949)
  • Execute doFinally even if subscribe() 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)
  • windowWhile now replenishes on premature cancel (#1017)
  • Fixed leak: retaining of windows in windowWhen (#975)
  • Fixed leak: buffers being retained until completion of a bufferWhen Flux (#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, )

👍 Thanks to the following contributors that also participated to this release

@glyn, @OlegDokuka, @onionf91, @stamhankar999

Assets 2
You can’t perform that action at this time.