reactor-core v3.3.3.RELEASE Release Notes
Release Date: 2020-02-24 // about 4 years ago-
๐ reactor-core
3.3.3.RELEASE
is part ofCalifornium-SR16
Release Train.โก๏ธ โ ๏ธ Update considerations and deprecations
- โ Added a
defer
opt-in inVirtualTimeScheduler.create
(#1251, #2012)- Manually-created
VirtualTimeScheduler
will now eagerly advance time even if there is no pending task. Use the overload withdefer=true
to get the old default behavior. StepVerifier
-created ones will continue lazily advancing time when no task is scheduled, in order to make testing of things like delays inside aflatMap
possible.
- Manually-created
๐ฑ โจ New features and improvements
- ๐ Fixed Flux.replay / Flux.cache hanging or serving wrong values, by correctly replaying request(UNBOUNDED) when no early subscriber (#2030, #2028)
- Propagate all req from FluxReplay pre-connect subscribers (#1921)
- โฑ Reimplemented boundedElasticScheduler to allow reentrancy (#1992, #2040, #1973)
- Multiple subscribeOn calls with a BoundedElasticScheduler could easily cause deadlock
- This also fixes #1973, although there was an intermediate fix in the old implementation
- From 3.2.15:
- Discard concatMapIterable/fromIterable's remainder on Cancel (#2014)
- the remainder of the internal
Iterator
is discarded when cancelled mid-iteration - we avoid the risk of iterating an infinite iterator by first checking if the
Iterable
is aCollection
or itsSpliterator
has theSIZED
characteristic. - the above check can result in at most 2 calls to
Iterable#iterator
for custom iterables - [polish] Improve onDiscardMultiple/QueueWithClear resiliency (#2021)
๐ฑ ๐ Bug fixes
- 0๏ธโฃ Avoid parallel insertion in Context's default putAll with foreign Context implementation (#2050)
- From 3.2.15:
- Account for requests made to upstream in FluxBufferPredicate (#1937, #2029)
- collect() discards on consumer error when fused (#2042)
- Unconditionally dispose worker in MonoSubscribeOn#cancel (#2037)
- Pass on cancelSupport when lifting ConnectableLiftFuseable (#1860)
- Correctly count continued errors on flatmapped callable (#2011)
- Handle "empty
Callable
" inFlux#collectList
(#2023, #2024) - Fix fused last(T) not delivering defaultValue (#2020)
๐ ๐ Documentation, Tests and Build
- Document Flux#next() behavior for an empty Flux (#1899)
๐ ๐ Thanks to the following contributors that also participated to this release
- โ Added a