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 of Californium-SR16 Release Train.

    โšก๏ธ โš ๏ธ Update considerations and deprecations

    • โž• Added a defer opt-in in VirtualTimeScheduler.create (#1251, #2012)
      • Manually-created VirtualTimeScheduler will now eagerly advance time even if there is no pending task. Use the overload with defer=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 a flatMap possible.

    ๐Ÿฑ โœจ 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 a Collection or its Spliterator has the SIZED 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" in Flux#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

    @btkelly, @ilyavy, @robotmrv, @yarosla