2.x: add subscribeOn overload to avoid same-pool deadlock with create#5386
Merged
akarnokd merged 1 commit intoReactiveX:2.xfrom Jun 4, 2017
Merged
2.x: add subscribeOn overload to avoid same-pool deadlock with create#5386akarnokd merged 1 commit intoReactiveX:2.xfrom
akarnokd merged 1 commit intoReactiveX:2.xfrom
Conversation
Codecov Report
@@ Coverage Diff @@
## 2.x #5386 +/- ##
===========================================
+ Coverage 96.1% 96.13% +0.03%
- Complexity 5781 5786 +5
===========================================
Files 630 630
Lines 41195 41197 +2
Branches 5726 5728 +2
===========================================
+ Hits 39591 39606 +15
+ Misses 632 626 -6
+ Partials 972 965 -7
Continue to review full report at Codecov.
|
vanniktech
approved these changes
Jun 1, 2017
artem-zinnatullin
approved these changes
Jun 1, 2017
This was referenced Jun 21, 2017
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 PR adds an overload to
subscribeOnthat exposes the existing feature to optionally request on the same scheduler where the subscription happened. This is necessary to avoid same-pool deadlock when the upstream containscreatelogic that blocks the emission thread, preventing any scheduled request to get through and leading to excess buffering or dropping data excessively. By not scheduling the request, it can directly update the emitter's request tracking and let the emitter continue.Formerly, the existing
subscribeOnautomatically disabled scheduling the requests if the immediate upstream was aFlowableCreate. However, if there were operators betweencreateandsubscribeOn(as often happening on Android with composing the schedulers at the end of the chain), thesubscribeOnoperator run in scheduled request mode by default.This change allows specifying this behavior through the new overload and thus distance between the
createandsubscribeOnoperators no longer matters.(Note that 1.x already has this overload.)