Reactor-Core 3.4.0.-RC1 is part of 2020.0.0-RC1 Release Train (codename Europium).
This first Release Candidate brings further changes to the Sinks API introduced in M2
This release note focuses on RC1-specific changes, but RC1 also contains all the changes released in 3.2.20.RELEASE and 3.3.10.RELEASE.
⚠️ Update considerations and deprecations
Processors and sinks update considerations
The most impactful change is the switch in focus from an API that emulates Subscriber (with void return types) to a lower level API that can consistently provide immediate feedback to a signalling attempt via the returned Emission. Now the later is prefixed with tryEmit. An emit API is offered as an initial problematic attempt at a higher level abstraction, but it had to be @Deprecated. See #2374 for potential ways to rewrite code that used to call onNext/next/emitNext-without-checking-returned-Emission in previous versions.
@simonbasle is also preparing a retrospective write up of all the changes through which the sinks API went in #2382.
emitXxx replaced with tryEmitXxx
- See #2319 : Split emitXxx/tryEmitXxx, more consistent use of hooks.
new Emission.FAIL_xxx error codes
Emission.FAIL_NON_SERIALIZED(see #2342 Failing fast on non-serialized access to Sink)Emission.FAIL_ZERO_SUBSCRIBER(see #2338 Add new Emission FAIL_ZERO_SUBSCRIBER error code)
"safe" onBackpressureError() not exposed anymore
- See #2375 : Remove
Sinks.many().multicast().onBackpressureError().
emitXxx part of the API to be removed / heavily reworked
- See #2374 : Deprecate Sinks
emit{Next,Error,Complete}methods.
🐞 Bug fixes
- These are incremental improvements over the
tryEmitNextAPI (previouslyemitNextin M2):
✨ New features and improvements
- #2312 Add user provided state to
Retry - #2325 Add method to snapshot factory+global schedulers, used by VTS (#2326)
- #2328 Make ParallelFlux.subscribe(array) public to allow delegation
Sinksrelated improvements over M2:- [Polish] Add inners[] param to Operators dropMulticast private methods
📖 Documentation, Tests and Build
- [doc] As the custom javadoc tags are not displayed in all IDEs, turned discard/errorMode javadoc tags into plain paragraphs (#2136)
- [build] #2353 Use
apifor reactive streams api dependency import - several typos and inconsistencies fixed by various contributors
- [doc] #2317 Add examples to deprecation notes of processors
- [test] Avoid potential infinite busy looping in tests
- [doc] Polish javadoc of the multicast onBackpressureBuffer Sinks (#2373)
- [doc] Polish variable names in snippet (#2351)