reactor-core v3.3.0.M3 Release Notes

Release Date: 2019-07-30 // over 4 years ago
  • ๐Ÿš€ 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

    • ๐Ÿ“š [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