reactor-core v3.3.0.M1 Release Notes
Release Date: 2019-05-10 // almost 5 years ago-
๐ Reactor-Core
3.3.0.M1
is part ofDysprosium-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
- This release train contains the new
- ๐
WorkQueueProcessor
andTopicProcessor
have been deprecated, due to underlying use ofUnsafe
(see #1051, #1052)- Recommended core alternative is to combine
EmitterProcessor
andpublishOn
- The processors have however been copied over to
reactor-extra
for people that want to continue using them as-is
- Recommended core alternative is to combine
๐ฑ โจ 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
andreactor.test
, #1641, #1692) - The
CorePublisher
interface has been introduced to distinguishPublisher
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 aCollection
,Tuple2
,Signal
, ...
- This allows to override the natural
- 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
- Backtraces are the additional callsite information captured by debug mode and checkpoint and appended to onError
- 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)
- (from 3.2:)
- 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 duration.zero change (c995c01)
- (from 3.2:)
- ๐ 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)
- (from 3.2:)
- โ [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
- ๐ Kotlin extensions have been deprecated and copied to a new artifact (#1697)