github reactor/reactor-core v3.0.3.RELEASE

latest releases: v3.8.5, v3.7.18, v3.8.4...
9 years ago

This is the third release of Reactor 3.0. This is a recommended update for all Reactor 3 users.

Update considerations and deprecations

  • the RxJava2 adapters have been moved to external project reactor-addons/reactor-adapter
  • RxJava1Adapter support has been dropped in favor of the official rxjava-reactive-stream. Since RxJava1Adapter was broken by latest rxjava1 maintenance releases, this might not be considered a hard breaking change.
  • if you used the test class TestSubscriber from the sources, it has been removed from the public API (renamed AssertSubscriber and placed in test scope until it is removed definitely). Please use the StepVerifier class in the external project reactor-addons/reactor-tests 3.0.3.RELEASE instead.
  • the protected field subscriber in Operators.MonoSubscriber has been renamed actual to be consistent with the other reactor-core operators. It should only be impacting for users that have implemented their own Mono operators.
  • Flux#then(Publisher<Void>) has been deprecated, use the new name thenEmpty (will be removed in 3.1, see #238)
  • Flux#subscribe overrides with a prefetch parameter have been deprecated in favor of chaining the new limitRate to other variants (#225)

🐞 Known bugs

  • #230 is not entirely fixed: callbacks for onNext and onComplete can still be called in wrong order, which impacts the doOnSuccess operator.
    • see discussion in PR #243. workaround: use doOnNext rather than doOnSuccess

New features and improvements

  • new mergeSequential and flatMapSequential operators (#178)
    • these allow to eagerly subscribe to the merged publishers, but to keep items emitted by them in order
  • new limitRate operator (#180)
    • allows to control the backpressure signal sent to the upstream instead of relying on downstream backpressure signals that may be too high, effectively rate limiting the upstream
  • cached schedulers are reset and shutdown upon setFactory, and are now a Supplier<Scheduler> (#218)
  • added subscribe variants with a Consumer<Subscription> callback (#196)
  • macro and micro optimizations in Flux (fromStream, thenMany, zip) and Mono (when, and, or and thenMany) (#240, #237)

Bug fixes

  • don't share doOnSuccess state (#232)
  • fix MonoSubscriber fusion logic (#230)
  • fix PeekFuseableSubscriber#poll not using Operators.onOperatorError (#205)
  • cancel Subscription on consumer error (#212)
  • self Suppression IllegalArgumentException when 'onErrorResume' propagates existing exception (#204)
  • make Scheduler shutdown consistent handling with future.cancel(true/false)
  • do not override subscription with a cancelled one (#202)
  • various fixes synchronized from reactive-streams-commons (#215)
  • improves error handling for flow with doOnError and subscribe (#190)

Various changes

  • various code cleanups and javadoc improvements
  • increased test coverage
  • a first step in the direction of harmonizing Flux and Mono thenXXX APIs (#238, #198)
  • exported IntelliJ inspection profile, renamed code style configuration in /codequality/idea
  • ring buffer code missing attribution to https://lmax-exchange.github.io/disruptor/ (#229)
  • reduce logging level used in Hooks.onXX (#213)
  • use j.u.Objects in Signal equals and toString

Thanks to the following contributors that also participated to this release 👍 : @dfeist @poutsma @snicoll @akarnokd

Don't miss a new reactor-core release

NewReleases is sending notifications on new releases.