File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed
main/java/rx/internal/operators
test/java/rx/internal/operators Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -397,6 +397,11 @@ public Boolean call(InnerSubscriber<T> s) {
397
397
398
398
@ Override
399
399
public void onError (Throwable e ) {
400
+ completed = true ;
401
+ innerError (e );
402
+ }
403
+
404
+ private void innerError (Throwable e ) {
400
405
if (delayErrors ) {
401
406
synchronized (this ) {
402
407
if (exceptions == null ) {
@@ -540,7 +545,7 @@ public void onNext(T t) {
540
545
public void onError (Throwable e ) {
541
546
// it doesn't go through queues, it immediately onErrors and tears everything down
542
547
if (ONCE_TERMINATED .compareAndSet (this , 0 , 1 )) {
543
- parentSubscriber .onError (e );
548
+ parentSubscriber .innerError (e );
544
549
}
545
550
}
546
551
@@ -753,4 +758,4 @@ private int drainQueue() {
753
758
}
754
759
}
755
760
}
756
- }
761
+ }
Original file line number Diff line number Diff line change 30
30
import rx .observers .TestSubscriber ;
31
31
32
32
import java .util .ArrayList ;
33
+ import java .util .Arrays ;
33
34
import java .util .List ;
34
35
import java .util .concurrent .CountDownLatch ;
35
36
import java .util .concurrent .TimeUnit ;
@@ -479,6 +480,20 @@ public void onCompleted() {
479
480
verify (o , never ()).onCompleted ();
480
481
}
481
482
483
+ @ Test
484
+ public void testErrorInParentObservable () {
485
+ TestSubscriber <Integer > ts = new TestSubscriber <Integer >();
486
+ Observable .mergeDelayError (
487
+ Observable .just (Observable .just (1 ), Observable .just (2 ))
488
+ .startWith (Observable .<Integer > error (new RuntimeException ()))
489
+ ).subscribe (ts );
490
+ ts .awaitTerminalEvent ();
491
+ ts .assertTerminalEvent ();
492
+ ts .assertReceivedOnNext (Arrays .asList (1 , 2 ));
493
+ assertEquals (1 , ts .getOnErrorEvents ().size ());
494
+
495
+ }
496
+
482
497
@ Test
483
498
public void testErrorInParentObservableDelayed () throws Exception {
484
499
final TestASynchronous1sDelayedObservable o1 = new TestASynchronous1sDelayedObservable ();
You can’t perform that action at this time.
0 commit comments