Skip to content

Releases: reactor/reactor-core

v3.3.0.RELEASE

25 Sep 11:17
Compare
Choose a tag to compare

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 trigger onError after onNext, which is not permitted in Mono.
    • Mono#usingWhen now waits for the async complete handler termination before propagating onNext (#1832)
    • Mono#using similarly avoids triggering onNext+onError if cleanup fails (#1853)
    • Mono#doOnTerminate now acts similarly to doOnSuccess, executing the side effect before the onNext 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 with Flux. 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.
  • (from M3:)
  • #1742 Processors and Kotlin extensions deprecations
  • the WorkQueueProcessor and TopicProcessor 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 and publishOn
  • 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 renamed transformDeferred()
  • 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 corresponding Signal must be explicitly requested from upstream (one extra request(1))
  • (from M2:)
  • Exceptions are now unwrapped (Exceptions#unwrap) in most sources that immediately produce an error, acting like a Callable (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) or toString) of global singleton Schedulers (#1885, #1886)
    • for instance, instead of parallel(parallel) this is now Schedulers.parallel()
  • 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
    • all ScheduledExecutor offer (95c0884)
    • DelayedWorkQueue#take (#1726)
  • 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 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)

πŸͺ² 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

04 Sep 16:52
Compare
Choose a tag to compare
v3.3.0.RC1 Pre-release
Pre-release

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 trigger onError after onNext, which is not permitted in Mono.
    • Mono#usingWhen now waits for the async complete handler termination before propagating onNext (#1832)
    • Mono#using similarly avoids triggering onNext+onError if cleanup fails (#1853)
    • Mono#doOnTerminate now acts similarly to doOnSuccess, executing the side effect before the onNext 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 with Flux. 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.

✨ 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 when onError in fused mode (#1836, #1835)
  • Explicitly catch LinkageError in Traces. This helps with some static analyzers (#1830)
  • Pass on cancelSupport when lifting ConnectableFlux (#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

@gindex, @UgiR

v3.2.12.RELEASE

03 Sep 08:45
Compare
Choose a tag to compare

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 when onError in fused mode (#1836, #1835)
  • Explicitly catch LinkageError in Traces. This helps with some static analyzers (#1830)
  • Pass on cancelSupport when lifting ConnectableFlux (#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

@gindex

v3.3.0.M3

30 Jul 02:33
Compare
Choose a tag to compare
v3.3.0.M3 Pre-release
Pre-release

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 and TopicProcessor 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 renamed transformDeferred()
  • 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 corresponding Signal must be explicitly requested from upstream (one extra request(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
  • #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

πŸ‘ 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

30 Jul 02:34
Compare
Choose a tag to compare

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

  • #1793 Reject Context.of calls with duplicate keys
  • Polish ContextN null checks (#1801)

πŸͺ² Bug fixes

  • #1739 Enforce a name for Schedulers.fromExecutorService
    • without this explicit name, the metrics would use null as a name
  • #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

@gindex

v3.3.0.M2

28 Jun 13:32
Compare
Choose a tag to compare
v3.3.0.M2 Pre-release
Pre-release

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 a Callable (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
    • all ScheduledExecutor offer (95c0884)
    • DelayedWorkQueue#take (#1726)
  • Remove unnecessary volatile with UnicastProcessor fusion (c86db5a)
  • Improved cache eviction in ElasticScheduler (#1700)
  • (from 3.2:)
  • Allow to choose a Scheduler for retryBackoff (#1707)
  • Added Mono#onErrorStop() convenience API to align with Flux (#1728)
  • New TestPublisher assertion method assertMaxRequested (#1732)
  • The new doFirst operator provides a clearer dual to doFinally, as a better alternative to common usage of doOnSubscribe (#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

@akarnokd, @Buzzardo, @dittos, @don-vip, @zhouzhou19950825

v3.2.10.RELEASE

28 Jun 12:59
Compare
Choose a tag to compare

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 for retryBackoff (#1707)
  • Added Mono#onErrorStop() convenience API to align with Flux (#1728)
  • New TestPublisher assertion method assertMaxRequested (#1732)
  • The new doFirst operator provides a clearer dual to doFinally, as a better alternative to common usage of doOnSubscribe (#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)

πŸ‘ Thanks to the following contributors that also participated to this release

@don-vip

v3.3.0.M1

10 May 09:56
Compare
Choose a tag to compare
v3.3.0.M1 Pre-release
Pre-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)
  • (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

v3.2.9.RELEASE

10 May 09:15
Compare
Choose a tag to compare

Reactor-Core 3.2.9.RELEASE is part of Californium-SR8 Release Train.

This is a recommended update for all Reactor 3 users.

✨ New features and improvements

  • 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

  • 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

  • [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, @OlegDokuka

v3.2.8.RELEASE

26 Mar 15:26
Compare
Choose a tag to compare

Reactor-Core 3.2.8.RELEASE is part of Californium-SR6 Release Train.

It is an immediate fixup release, fixing a regression introduced in 3.2.7.RELEASE (3d2d1c4).

The rest of this release note reflects the content of 3.2.7.RELEASE, that is to say the delta with 3.2.6.RELEASE

πŸͺ² Bug fixes

  • Invoke Sink onCancel handler on eager cancellation of Flux.create and Mono.create (#1622, 3d2d1c4)
  • Call MonoSink.onRequest with eager demand (#1560)
  • Avoid self-suppression in onErrorContinue underlying handlers (#1535)
  • Have collectList detect and report RS protocol errors (#1523)
  • Fixed a race in FluxBufferTimeout on flush (#1534)
  • Eagerly invoke Mono#doOnEach handler(complete) during onNext (#1547, 7069971)

πŸ“– Documentation, Tests and Build

  • Document that onErrorContinue needs idempotent predicate, mention throwing (c15ff91)