Improve route predicate handling of errors in filterWhen #427
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 commit slightly changes the way filterWhen is used in route
predicate mapping, in order to avoid swallowing of errors due to the
combination of
filterWhen
andnext()
. This is due tofilterWhen
delaying the emission of async predicate errors to the end of the
Flux, and
next()
potentially cancelling said Flux before the error(s)are propagated.
The fix involves applying
filterWhen
inside aconcatMap
, on a valueper value basis rather than on the whole original Flux. This results
in predicate errors being propagated as they happen, at which point
we can log them and swallow them in the concatMap.