Skip to content

@simonbasle simonbasle released this May 10, 2019 · 13 commits to master since this release

Reactor-Core 3.3.0.M1 is part of Dysprosium-M1 Release Train.

This first milestone of the 3.3.x cycle, containing bugfixes and improvements (including changes from the GA 3.2.9.RELEASE). It also contains two API deprecations (Kotlin extensions and WorkQueueProcessor/TopicProcessor).

⚠️ Update considerations and deprecations

  • Kotlin extensions have been deprecated and copied to a new artifact (#1697)
    • This release train contains the new reactor-kotlin-extensions artifact, which will regroup all Kotlin extensions and future Kotlin-related work
  • WorkQueueProcessor and TopicProcessor have been deprecated, due to underlying use of Unsafe (see #1051, #1052)
    • Recommended core alternative is to combine EmitterProcessor and publishOn
    • The processors have however been copied over to reactor-extra for people that want to continue using them as-is

New features and improvements

  • Compatibility with projects using the Java Module System (JPMS) has been improved by declaring an official Automatic-Module-Name (reactor.core and reactor.test, #1641, #1692)
  • The CorePublisher interface has been introduced to distinguish Publisher from reactor (#1527)
  • Add a simplified API for wrapping scheduled tasks (#1546)
  • Add an API-preserving hide() method to ConnectableFlux (#1577)
  • [reactor-test] Added hasDiscardedMatching method in StepVerifier (#1509)
  • [reactor-test] Add ToStringConverter and Extractor to StepVerifierOptions (#1558)
    • This allows to override the natural toString representation of classes that are known to have an obscure representation, as well as extracting such objects that would be nested in containers like a Collection, Tuple2, Signal, ...
  • Reworked the format of "backtraces" (#1672, #1702)
    • Backtraces are the additional callsite information captured by debug mode and checkpoint and appended to onError Throwable as a suppressed exception
  • Reactor now integrates into Blockhound 1.0.0.M3 using the SPI on reactor side instead of programmatic explicit registration on blockhound side (#1682, #1690)
  • Multiple improvements around resource cleanup and discarding:
    • Buffering FluxSinks now discard on cancel vs next race (#1634)
    • Null out lastKey to avoid retaining in distinctUntilChanged (#1647)
    • Atomically update the state of MonoSubscriber to CANCELLED (f02d8b9)
    • Deal with onNext or onComplete vs cancel races in collectList (#1660)
    • Operators.onDiscardMultiple now avoids stream and potential NPE (cce04e7)
  • Fix displaying of light checkpoints in backtraces (#1646)
  • Removed redundant volatiles in switchOnFirst (#1496)
  • Set parallel and elastic Schedulers removeOnCancelPolicy to avoid task memory leak (#1674)

🐞 Bug fixes

  • [reactor-test] Prevent StepVerifier collect hang when consuming all signals (#1529)
  • Unwrap CompletionException in Mono#fromFuture (#1652)
  • Fix MonoProcessor#block change (c995c01)
  • Fixed a missing exit condition in Flux.publish drain loop with SYNC fusion (#1528)
  • ParallelFlux#doOnEach now sees the Context (#1656, #1657)
  • onBackpressureBuffer could use a greater-than-configured maxSize (#1666)
  • Flux.generate would fail to propagates an exception in some fused scenarios (#1685)

📖 Documentation, Tests and Build

  • [doc] Document that BaseSubscriber instances can't be reused (#1490)
  • [doc] Small improvements in reference guide (#1594)
  • [CI] Sanity check build on JDK12 on Travis (446ca1b)
  • [doc] Use the correct marble diagram for Mono#onErrorResume (#1679)
  • [build] Polish .gitignore to avoid too broad regex (92ae4e5)
  • [test] Made small adjustments to a few flakky tests (#1643, 957060e, cd94cb9)
  • [build] Make downloadBaseline faster by using compression + onlyIfNewer (c436cf0)
  • [build] Skip downloadBaseline/japicmp in --offline mode (22691ef)

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

@aftersss, @Buzzardo, @flambard, @mumukiller, @OlegDokuka, @pmackowski, @szpak

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