File tree 2 files changed +55
-3
lines changed
main/java/rx/internal/operators
test/java/rx/internal/operators 2 files changed +55
-3
lines changed Original file line number Diff line number Diff line change @@ -220,7 +220,7 @@ void drain() {
220
220
221
221
final int delayErrorMode = this .delayErrorMode ;
222
222
223
- do {
223
+ for (;;) {
224
224
if (actual .isUnsubscribed ()) {
225
225
return ;
226
226
}
@@ -288,11 +288,17 @@ void drain() {
288
288
return ;
289
289
}
290
290
}
291
+ request (1 );
292
+ } else {
293
+ request (1 );
294
+ continue ;
291
295
}
292
- request (1 );
293
296
}
294
297
}
295
- } while (wip .decrementAndGet () != 0 );
298
+ if (wip .decrementAndGet () == 0 ) {
299
+ break ;
300
+ }
301
+ }
296
302
}
297
303
298
304
void drainError (Throwable mapperError ) {
Original file line number Diff line number Diff line change @@ -864,4 +864,50 @@ public void scalarAndRangeBackpressured() {
864
864
ts .assertCompleted ();
865
865
ts .assertNoErrors ();
866
866
}
867
+
868
+ @ Test
869
+ public void scalarAndEmptyBackpressured () {
870
+ TestSubscriber <Integer > ts = TestSubscriber .create (0 );
871
+
872
+ Observable .just (1 ).concatWith (Observable .<Integer >empty ()).subscribe (ts );
873
+
874
+ ts .assertNoValues ();
875
+
876
+ ts .requestMore (5 );
877
+
878
+ ts .assertValue (1 );
879
+ ts .assertCompleted ();
880
+ ts .assertNoErrors ();
881
+ }
882
+
883
+ @ Test
884
+ public void rangeAndEmptyBackpressured () {
885
+ TestSubscriber <Integer > ts = TestSubscriber .create (0 );
886
+
887
+ Observable .range (1 , 2 ).concatWith (Observable .<Integer >empty ()).subscribe (ts );
888
+
889
+ ts .assertNoValues ();
890
+
891
+ ts .requestMore (5 );
892
+
893
+ ts .assertValues (1 , 2 );
894
+ ts .assertCompleted ();
895
+ ts .assertNoErrors ();
896
+ }
897
+
898
+ @ Test
899
+ public void emptyAndScalarBackpressured () {
900
+ TestSubscriber <Integer > ts = TestSubscriber .create (0 );
901
+
902
+ Observable .<Integer >empty ().concatWith (Observable .just (1 )).subscribe (ts );
903
+
904
+ ts .assertNoValues ();
905
+
906
+ ts .requestMore (5 );
907
+
908
+ ts .assertValue (1 );
909
+ ts .assertCompleted ();
910
+ ts .assertNoErrors ();
911
+ }
912
+
867
913
}
You can’t perform that action at this time.
0 commit comments