1.x: concatMap full rewrite + delayError + performance #3759
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a full rewrite of the
concat
/concatMap
operator with the following properties:OnSubscribe
to save on the allocation oflift
concatDelayError
andconcatMapDelayError
to delay errors to the very endconcatMap
orconcatMapDelayError
on a scalar source now bypasses the operator completely and usesScalarSynchronousObservable.scalarFlatMap
as well.just
andempty
sources and bypasses subscribing accordinglyExceptionsUtils
to work with composite exceptions and terminal state; useful for other similar delaying operators later on.concat
is now implemented asconcatMap(v -> v)
which saves on the allocation of an entiremap
operatorOperatorWindowWithSizeTest.testBackpressureOuterInexact
had to be ignored becausewindow
doesn't honor backpressure properly and it is fixed in 1.x: fix counted buffer and window backpressure #3678; once it has been resolved, the test can be reenabledCompositeException
for convenience; avoids creating a list when the number of initial exceptions are known upfront.Performance comparison to baseline (i7 4770K, Windows 7 x64, Java 8u72):