Releases: reactor/reactor-core
v3.3.2.RELEASE
reactor-core 3.3.2.RELEASE
is part of Dysprosium-SR3
Release Train.
💥 Known issues
- (since 3.3.0.M2) There are regressions with
Flux.replay
/cache
hanging or delivering wrong data (tracked in #2030)
⚠️ Update considerations and deprecations
- Documentation zip file is now published with -docs classifier (#1975)
✨ New features and improvements
- Add onErrorContinue support to FluxFlattenIterable (#2008)
- Eagerly remove executor metrics after each worker is terminated (#1787)
- Do not instrument CGLIB proxies in BlockHound (#1983)
- Discard elements of Collection in collect(), cover more cases (#1924)
- Avoid creating Map.Entry in Context.putAll (#1970, #1971)
- Implement Mono.cache() as MonoCacheTime without TTL (#2002)
📖 Documentation, Tests and Build
- [build] Improve builds and prepare for a releaser script automating a lot (198ce1a, 0953bcf, 63265b5, 086132c, 22ecb2e)
- bump versions in README, publish to artifactory, correctly get credentials from env, etc...
- Add FAQ section about logging with MDC (#1985, #1986)
- [doc] Fix typos and improve explanations/diagrams (#2001, #1994, #1989, #1981, #1999)
- Check for explicit
currentContext()
with ArchUnit (#1988) - [build] Remove propdeps-maven and use propdeps for optional (2ba4760)
- StepVerifier fix For Fusion and request after onNext (#1982)
- Documentation zip file is now published with -docs classifier (#1975)
👍 Thanks to the following contributors that also participated to this release
@echooymxq, @hojongs, @martin-tarjanyi, @mdonkers, @OlegDokuka, @sgsfak
v3.3.1.RELEASE
Reactor-Core 3.3.1.RELEASE
is part of Dysprosium-SR2
Release Train.
It also includes changes from the 3.2.13.RELEASE version.
One important change to pick up for testing Reactor is in StepVerifier
: the combination of expectNoEvent
followed by thenCancel
wasn't working terribly well, and a new better terminal expectation has been introduced: expectTimeout
(#1913)
💥 Known issues
- (since 3.3.0.M2) There are regressions with
Flux.replay
/cache
hanging or delivering wrong data (tracked in #2030)
⚠️ Update considerations and deprecations
- #1911 Instrument ScheduledExecutorService via Micrometer
- Instead of doing our own executor decorator we now rely on the Micrometer one, but it might have different coverage of tasks
✨ New features and improvements
- #1557 Removed greediness from FluxBufferTimeout
- #1938 Remove overeager toString calls in FluxIndexFuseable
- #1913
StepVerifier
:expectTimeout(Duration)
as an alternative toexpectNoEvent(Duration).thenCancel()
- #1902 When
transform
ortransformDeferred
apply a transformation to a non-ReactorPublisher
, warn when/if the originalContext
is lost (#1888) - #1966 Internal simplification of how the comparator is applied in
collectSortedList
- #1962 Avoid extending
Map.Entry
inContext1
to ensure various libraries don't represent it inconsistenly when printing out collections ofContext
- #1963 Retain insertion order in
ContextN
(by extendingLinkedHashMap
instead ofHashMap
) - changes from 3.2.13.RELEASE:
- #1916 Interpret MAX_VALUEms as indefinite caching in
Mono#cache(Function, Function, Supplier)
(backported) - #1746 Add
VirtualTimeScheduler#getScheduledTaskCount()
(backported) - #1968 Make
Flux#publish()
propagate 1st subscriberContext
- #1953 Add
Exceptions.isTraceback
, and a mean to unwrap a composite without the tacebacks (Exceptions.unwrapMultipleExcludingTracebacks
)
- #1916 Interpret MAX_VALUEms as indefinite caching in
🪲 Bug fixes
- changes from 3.2.13.RELEASE:
📖 Documentation, Tests and Build
- [doc] #1908 Marble diagram for
bufferWhile
was incorrectly showing dropped separators - [doc] #1915
Flux#join
javadoc and marble have been clarified - [dependency] Bumped BlockHound to the release version (#1923)
- [build] Reorganization of the build with separation of concerns (buildSrc, gradle.properties, etc...) (0bd50de, a1dab8a)
- [build] Add reactor.blockhound to OSGI optional bundles (#1932, #1933)
- [build] Prepare for a releasetrain releaser script: add new tasks, allow mavenLocal source (06977a6, #1960)
- changes from 3.2.13.RELEASE:
- [build] Switched to Gradle 5.6 (8e97f91)
- [build] Switched publication plugin to
maven-publish
andartifactory
(#1943) - [build] Fixed generation of refguide pdf when custom version is used (2c621b6)
- [polish]
Exceptions.multiple(Iterable)
now produces aCompositeException
, more test coverage ofExceptions
util (#1954)
👍 Thanks to the following contributors that also participated to this release
@andreisilviudragnea, @akarnokd, @berry120, @dittos, @EleanorRoseLegg, @gindex, @jabrena, @simondaudin, @slisaasquatch, @thiyagu-7, @ttddyy, @slisaasquatch, @wonwoo
v3.2.13.RELEASE
Reactor-Core 3.2.13.RELEASE
is part of Californium-SR14
Release Train.
✨ New features and improvements
- #1916 Interpret MAX_VALUEms as indefinite caching in
Mono#cache(Function, Function, Supplier)
(backported) - #1746 Add
VirtualTimeScheduler#getScheduledTaskCount()
(backported) - #1968 Make
Flux#publish()
propagate 1st subscriberContext
- #1953 Add
Exceptions.isTraceback
, and a mean to unwrap a composite without the tacebacks (Exceptions.unwrapMultipleExcludingTracebacks
)
🪲 Bug fixes
- #1945 Avoid unnecessary wrapping of exceptions in scalar flatMap
- #1959 GroupedFlux fused with
parallel()
not replenishing properly
📖 Documentation, Tests and Build
- [build] Switched to Gradle 5.6 (8e97f91)
- [build] Switched publication plugin to
maven-publish
andartifactory
(#1943) - [build] Fixed generation of refguide pdf when custom version is used (2c621b6)
- [polish]
Exceptions.multiple(Iterable)
now produces aCompositeException
, more test coverage ofExceptions
util (#1954)
👍 Thanks to the following contributors that also participated to this release
v3.3.0.RELEASE
Reactor-Core 3.3.0.RELEASE
is part of Dysprosium-RELEASE
Release Train.
This release note covers the first GA release of the 3.3.x cycle, and as such describes the changes from the perspective of a 3.2.x to 3.3.0 comparison.
See also release notes from 3.2.12, 3.2.11, 3.2.10 and 3.2.9 for changes that were inherited from the 3.2.x maintenance releases.
This release is a big opportunity to polish the APIs and some behaviors with less restriction than maintenance releases.
🌟 It also introduces a few new features, the highlight of which is the BoundedElasticScheduler
:
this one has evolved from the ElasticScheduler
and is intended as a future replacement for it.
A cap can be put on the number of threads such a scheduler can spawn. After that cap is reached, further task submissions are deferred (being enqueued) up to a second global limit on enqueued tasks (optionally unbounded).
💥 Known issues
- (since 3.3.0.M2) There are regressions with
Flux.replay
/cache
hanging or delivering wrong data (tracked in #2030)
⚠️ Update considerations and deprecations
- (from RC1:)
- A few Mono operators have slightly changed their behavior in regards to how when they propagate
onNext
: they could triggeronError
afteronNext
, which is not permitted in Mono.Mono#usingWhen
now waits for the async complete handler termination before propagatingonNext
(#1832)Mono#using
similarly avoids triggering onNext+onError if cleanup fails (#1853)Mono#doOnTerminate
now acts similarly todoOnSuccess
, executing the side effect before theonNext
is propagated downstream (#1752)
Mono#do[On|After]SuccessOrError
has been deprecated and marked for removal in 3.4 (#1854)usingWhen
API has been polished, and some variants deprecated for removal in 3.4 (#1687)- A new overload has been introduced that uses
BiFunction
for error handler (exposing the failure that causes "rollback") - A single-handler version has been added to
Mono
for alignment withFlux
. This is the simplest case: same handler for complete, error and cancel terminations. - All other overloads have been deprecated. Goal is to favor either the simple 1-handler-covers-all case OR force users to be explicit about ALL possible terminations.
- A new overload has been introduced that uses
- (from M3:)
- #1742 Processors and Kotlin extensions deprecations
- the
WorkQueueProcessor
andTopicProcessor
have been marked as deprecated for 3.3.x and will be removed in 3.4 - have been deprecated, due to underlying use of
Unsafe
- Recommended core alternative is to combine
EmitterProcessor
andpublishOn
- the Kotlin extensions are deprecated in core and replaced by a dedicated project/repo,
reactor-kotlin-extensions
- in both cases, the deprecated classes don't appear in the generated javadoc jar
- #1764 Deprecated method
Schedulers.Factory#decorateExecutorService
has been removed - #1669 All
onBackpressureBuffer(maxSize+error)
variants now delay errors - In debug mode, most of the original stacktrace is artificially moved at the end of the exception's output, after the "backtrace" (#1781)
- #1745
compose()
has been deprecated and renamedtransformDeferred()
- deprecated operator will be removed in 3.4
- #1451 Dematerialize has been reworked and now expects 1 request per upstream
Signal
- This avoids
onNext
events to be emitted only when the subsequent signal is ready upstream - This also means that in order to get a terminal signal like
onComplete
signal, the correspondingSignal
must be explicitly requested from upstream (one extrarequest(1)
) - (from M2:)
- Exceptions are now unwrapped (
Exceptions#unwrap
) in most sources that immediately produce an error, acting like aCallable
(b6f4d29) - Moved
reactor-tools
sources into the core repository (#1731)
✨ New features and improvements
- 🌟 Added a
boundedElastic
Scheduler that caps number of threads and scales to 0 (#1804)- global singleton also cap deferred tasks past the thread limit to 100K (32d2a29)
- thread cap and task queue capacity can be configured separately, the later can even be unbounded
- Add windowUntilChanged operator, ensure the stateful predicate is subscriber-specific and cleaned on cancel (#1850, #1901)
- Improve the naming (eg.
scan(Attr.NAME)
ortoString
) of global singleton Schedulers (#1885, #1886)- for instance, instead of
parallel(parallel)
this is nowSchedulers.parallel()
- for instance, instead of
- Improvements around subscription recursivity / subscribe loop performance (#1882)
- Avoid extra lastAssembly by using CorePublisher where possible (#1883)
- (from RC1:)
- Due to a few Throwable constants, class references could leak in multi-classloader environments. This is now avoided by skipping the filling of the stacktrace (#1872)
- Add BufferUntilChanged operator (#1706, bb5b2bb)
- Added new StepVerifier API to subscribe to source and verify it later (#1848, b2ce5fe)
- (from M3:)
- Add "VirtualTimeScheduler#getScheduledTaskCount()" (#1746)
- #1763 Flux.parallel now uses
Schedulers.DEFAULT_POOL_SIZE
(which can be overridden by system property) - #1767 Add ParallelFlux#then to compose on parallel termination
- #1722 Make sure ElasticScheduler.CachedService gets disposed
- #1798 Use bounded wildcard in error(Supplier)
- Polish flux metrics (#1802)
- see also the other commits linked in that PR
- Actually record executor service metrics to Micrometer (#1795)
- Add a Context-aware {Mono,Flux}.deferWithContext (#1819)
- Eliminate
subscribe
from stack by optimizing the "tail calls" (#1761, #1826) - #1416 Add lambda subscribe variants with a context
- (from M2:)
- Avoid triggering
Context
lookups in error sources (4f2bc7a) - Extended blockHound whitelist
- Remove unnecessary volatile with UnicastProcessor fusion (c86db5a)
- Improved cache eviction in ElasticScheduler (#1700)
- (from M1:)
- 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)
🪲 Bug fixes
- (from M2:)
- Avoid unbounded Flux.replay request with bounded subscribers (#1185)
- Removed "checkpoint" prefix in backtraces from return-only callsites (#1740)
- (from M1:)
- [reactor-test] Prevent StepVerifier collect hang when consuming all signals (#1529)
- Unwrap CompletionException in Mono#fromFuture (#1652)
- Fix MonoProcessor#block duration.zero change (c995c01)
📖 Documentation, Tests and Build
- Document Java9stubs-related importing issues (#1680)
- [doc] Disambiguate lowTide example in limitRate javadoc
- Document reactor-tools in refguide (#1903)
- [internal test utils] Rework autoCleanup methods into a reusable JUnit Rule
- [internal test utils] Add direct assertion method on RetainedDetector
- (from RC1:)
- [doc] Add limitRate marble diagrams (#1449)
- [build] Polish benchmarks build, remove jmh plugin (#1844, 1ba4944)
- [build] Make it possible to run two JMH tasks - baseline and current (#1862)
- (from M3:)
- [build] Use "check" task as an aggregator, not "test" (#1776)
- [doc] #1539 Add "metrics" section to the reference guide (see also #1812, #1817)
- (from M2:)
- [build] JMH benchmarks are now in a separate sub-project, forked scrabble benchmark there (8895e94)
- [build] Log console output in Gradle ONLY for failed tests on CI (fc74beb)
- (from M1:)
- [doc] Document that BaseSubscriber instances can't be reused (#1490)
- [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)
👍 Thanks to the following contributors that also participated to the Dysprosium-RELEASE or pre-releases
@aftersss, @akarnokd, @apuravchauhan, @berry120, @Buzzardo, @dittos, @don-vip, @flambard, @gindex, @hisener, @izeye, @jnizet, @mumukiller, @OlegDokuka, @pcdavid, @pmackowski, @ramonPires, @szpak, @ttddyy, @UgiR, @zhouzhou19950825
v3.3.0.RC1
Reactor-Core 3.3.0.RC1
is part of Dysprosium-RC1
Pre-Release Train.
This first release candidate of the 3.3.x cycle contains bugfixes and improvements from the GA 3.2.12.RELEASE as well as a few new features. It also involves a few behavior impacting changes and deprecations.
⚠️ Update considerations and deprecations
- A few Mono operators have slightly changed their behavior in regards to how when they propagate
onNext
: they could triggeronError
afteronNext
, which is not permitted in Mono.Mono#usingWhen
now waits for the async complete handler termination before propagatingonNext
(#1832)Mono#using
similarly avoids triggering onNext+onError if cleanup fails (#1853)Mono#doOnTerminate
now acts similarly todoOnSuccess
, executing the side effect before theonNext
is propagated downstream (#1752)
Mono#do[On|After]SuccessOrError
has been deprecated and marked for removal in 3.4 (#1854)usingWhen
API has been polished, and some variants deprecated for removal in 3.4 (#1687)- A new overload has been introduced that uses
BiFunction
for error handler (exposing the failure that causes "rollback") - A single-handler version has been added to
Mono
for alignment withFlux
. This is the simplest case: same handler for complete, error and cancel terminations. - All other overloads have been deprecated. Goal is to favor either the simple 1-handler-covers-all case OR force users to be explicit about ALL possible terminations.
- A new overload has been introduced that uses
✨ New features and improvements
- Due to a few Throwable constants, class references could leak in multi-classloader environments. This is now avoided by skipping the filling of the stacktrace (#1872)
- Add BufferUntilChanged operator (#1706, bb5b2bb)
- Added new StepVerifier API to subscribe to source and verify it later (#1848, b2ce5fe)
🪲 Bug fixes
- (from 3.2:)
Flux#flatMap
with scalar source now supports onErrorContinue (#1684)Flux#doAfterTerminate
now executed whenonError
in fused mode (#1836, #1835)- Explicitly catch
LinkageError
in Traces. This helps with some static analyzers (#1830) - Pass on
cancelSupport
when liftingConnectableFlux
(#1860)
📖 Documentation, Tests and Build
- [doc] Add limitRate marble diagrams (#1449)
- [build] Polish benchmarks build, remove jmh plugin (#1844, 1ba4944)
- [doc] Fix several typos in javadocs (#1845)
- [build] Make it possible to run two JMH tasks - baseline and current (#1862)
- [polish] Fix MaterializeSubscriber toString, AbstractQueue's won't work (df34ad9)
- [chores] Update BlockHound to RC1 (#1877)
- (from 3.2:)
- [github] Removed
CONTRIBUTING.md
and issue_template in favor of centralized ones (740c048) - [build] Use JCenter, not MavenCentral for doDownloadBaseline (aa08709, d4f5332)
- [doc] Remove double mention of subscribe in Flux README (#1861)
- [doc] Document that default initial delay for interval is the period (#1866)
👍 Thanks to the following contributors that also participated to this release
v3.2.12.RELEASE
Reactor-Core 3.2.12.RELEASE
is part of Californium-SR11
Release Train.
This is a recommended update for all Reactor 3 users.
✨ New features and improvements
- Due to a few Throwable constants, class references could leak in multi-classloader environments. This is now avoided by skipping the filling of the stacktrace (#1872)
🪲 Bug fixes
Flux#flatMap
with scalar source now supports onErrorContinue (#1684)Flux#doAfterTerminate
now executed whenonError
in fused mode (#1836, #1835)- Explicitly catch
LinkageError
in Traces. This helps with some static analyzers (#1830) - Pass on
cancelSupport
when liftingConnectableFlux
(#1860)
📖 Documentation, Tests and Build
- [github] Removed
CONTRIBUTING.md
and issue_template in favor of centralized ones (740c048) - [build] Use JCenter, not MavenCentral for doDownloadBaseline (aa08709, d4f5332)
- [doc] Remove double mention of subscribe in Flux README (#1861)
- [doc] Document that default initial delay for interval is the period (#1866)
👍 Thanks to the following contributors that also participated to this release
v3.3.0.M3
Reactor-Core 3.3.0.M3
is part of Dysprosium-M3
Release Train.
This third milestone of the 3.3.x cycle contains bugfixes and improvements (including changes from the GA 3.2.11.RELEASE) as well as some behavior/API impacting changes:
⚠️ Update considerations and deprecations
- #1742 Processors and Kotlin extensions deprecations
- the
WorkQueueProcessor
andTopicProcessor
have been marked as deprecated for 3.3.x and will be removed in 3.4 - the Kotlin extensions are deprecated in core and replaced by a dedicated project/repo
- in both cases, the deprecated classes don't appear in the generated javadoc jar
- #1764 Deprecated method
Schedulers.Factory#decorateExecutorService
has been removed - #1669 All
onBackpressureBuffer(maxSize+error)
variants now delay errors - In debug mode, most of the original stacktrace is artificially moved at the end of the exception's output, after the "backtrace" (#1781)
- #1745
compose()
has been deprecated and renamedtransformDeferred()
- deprecated operator will be removed in 3.4
- #1451 Dematerialize has been reworked and now expects 1 request per upstream
Signal
- This avoids
onNext
events to be emitted only when the subsequent signal is ready upstream - This also means that in order to get a terminal signal like
onComplete
signal, the correspondingSignal
must be explicitly requested from upstream (one extrarequest(1)
)
✨ New features and improvements
- Add "VirtualTimeScheduler#getScheduledTaskCount()" (#1746)
- #1763 Flux.parallel now uses
Schedulers.DEFAULT_POOL_SIZE
(which can be overridden by system property) - #1767 Add ParallelFlux#then to compose on parallel termination
- #1722 Make sure ElasticScheduler.CachedService gets disposed
- #1798 Use bounded wildcard in error(Supplier)
- Polish flux metrics (#1802)
- see also the other commits linked in that PR
- Actually record executor service metrics to Micrometer (#1795)
- Add a Context-aware {Mono,Flux}.deferWithContext (#1819)
- Eliminate
subscribe
from stack by optimizing the "tail calls" (#1761, #1826) - #1416 Add lambda subscribe variants with a context
- (from 3.2:)
- #1793 Reject Context.of calls with duplicate keys
- Polish ContextN null checks (#1801)
🪲 Bug fixes
- (from 3.2:)
- #1739 Enforce a name for Schedulers.fromExecutorService
- without this explicit name, the metrics would use
null
as a name
- without this explicit name, the metrics would use
- #1783 Do not drop errors in MonoCacheTime, better doc (#1784)
- #1738 FluxRefCount inner doesn't guard against multiple cancels
- #1797 Explicitly reject null keys/values in Context constructors
- #1741 MonoCreate hanging if delayUntil throws exception
📖 Documentation, Tests and Build
- [doc] Various documentation improvements and typo fixes (1847fcf, a7a25d3, 6289325, 631b399, #1757, #1796, #1820, #1821, d48ac6c)
- [build] Use "check" task as an aggregator, not "test" (#1776)
- [doc] #1539 Add "metrics" section to the reference guide (see also #1812, #1817)
- Update BlockHound to 1.0.0.M4 (#1751)
- [chores] Polish codebase to fix compiler warnings/suppress some in tests (#1824)
👍 Thanks to the following contributors that also participated to this release
@jbnizet, @izeye, @dittos, @apuravchauhan, @gindex, @hisener, @berry120, @pcdavid, @ttddyy, @ramonPires
v3.2.11.RELEASE
Reactor-Core 3.2.11.RELEASE
is part of Californium-SR10
Release Train.
This is a recommended update for all Reactor 3 users, with mainly bugfixes.
✨ New features and improvements
🪲 Bug fixes
- #1739 Enforce a name for Schedulers.fromExecutorService
- without this explicit name, the metrics would use
null
as a name
- without this explicit name, the metrics would use
- #1783 Do not drop errors in MonoCacheTime, better doc (#1784)
- #1738 FluxRefCount inner doesn't guard against multiple cancels
- #1797 Explicitly reject null keys/values in Context constructors
- #1741 MonoCreate hanging if delayUntil throws exception
👍 Thanks to the following contributors that also participated to this release
v3.3.0.M2
Reactor-Core 3.3.0.M2
is part of Dysprosium-M2
Release Train.
This second milestone of the 3.3.x cycle, containing bugfixes and improvements (including changes from the GA 3.2.10.RELEASE).
⚠️ Update considerations and deprecations
- Exceptions are now unwrapped (
Exceptions#unwrap
) in most sources that immediately produce an error, acting like aCallable
(b6f4d29) - Moved
reactor-tools
sources into the core repository (#1731)
✨ New features and improvements
- Avoid triggering
Context
lookups in error sources (4f2bc7a) - Extended blockHound whitelist
- Remove unnecessary volatile with UnicastProcessor fusion (c86db5a)
- Improved cache eviction in ElasticScheduler (#1700)
- (from 3.2:)
- Allow to choose a
Scheduler
forretryBackoff
(#1707) - Added
Mono#onErrorStop()
convenience API to align with Flux (#1728) - New
TestPublisher
assertion methodassertMaxRequested
(#1732) - The new
doFirst
operator provides a clearer dual todoFinally
, as a better alternative to common usage ofdoOnSubscribe
(#1716)
🪲 Bug fixes
- Avoid unbounded Flux.replay request with bounded subscribers (#1185)
- Removed "checkpoint" prefix in backtraces from return-only callsites (#1740)
- (from 3.2:)
- Fixed checking of inner subscribers in
FluxPublish#remove()
(2ce7b75) Flux.publish().autoConnect(0)
now correctly drops early items (#1712)- Fixed a memory barrier regression introduced in MonoSubscriber (#1719)
📖 Documentation, Tests and Build
- [doc] Fixed typo in refguide (
advancedFeatures.adoc
, 11bc552) - [build] JMH benchmarks are now in a separate sub-project, forked scrabble benchmark there (8895e94)
- [build] Log console output in Gradle ONLY for failed tests on CI (fc74beb)
- [doc] Added code fences in reference guide (#1737)
- (from 3.2:)
- Polished license spelling to "Apache License, Version 2.0" (d88eeda)
- [build] Dokka bumped to 0.9.18 (#1718)
- [doc] Added marble diagram for
Mono#doOnSuccessOrError
(#1725) - [doc] Polish 'Suggest Edit' links and asciidoctor config (6bdbf8b)
👍 Thanks to the following contributors that also participated to this release
v3.2.10.RELEASE
Reactor-Core 3.2.10.RELEASE
is part of Californium-SR9
Release Train.
This is a recommended update for all Reactor 3 users.
✨ New features and improvements
- Allow to choose a
Scheduler
forretryBackoff
(#1707) - Added
Mono#onErrorStop()
convenience API to align with Flux (#1728) - New
TestPublisher
assertion methodassertMaxRequested
(#1732) - The new
doFirst
operator provides a clearer dual todoFinally
, as a better alternative to common usage ofdoOnSubscribe
(#1716)
🪲 Bug fixes
- Fixed checking of inner subscribers in
FluxPublish#remove()
(2ce7b75) Flux.publish().autoConnect(0)
now correctly drops early items (#1712)- Fixed a memory barrier regression introduced in MonoSubscriber (#1719)
📖 Documentation, Tests and Build
- Polished license spelling to "Apache License, Version 2.0" (d88eeda)
- [build] Dokka bumped to 0.9.18 (#1718)
- [doc] Added marble diagram for
Mono#doOnSuccessOrError
(#1725) - [doc] Polish 'Suggest Edit' links and asciidoctor config (6bdbf8b)