Closed
Description
@Test
public void test() {
Observable.zip(
Observable.just("1")
.doOnTerminate(() -> System.out.println("TERMINATE 1")),
Observable.just("2")
.delay(1, TimeUnit.SECONDS)
.doOnTerminate(() -> System.out.println("TERMINATE 2")),
(result1, result2) -> null)
.doOnTerminate(() -> System.out.println("TERMINATE"))
.toBlocking()
.single();
}
Output:
TERMINATE 1
TERMINATE
Expected output:
TERMINATE 1
TERMINATE 2
TERMINATE
Or maybe my thinking is wrong?
Context of the problem: I use Hystrix observable commands in zip:
Observable.zip(
new MyHystrixObservableCommand(arg1).toObservable(),
new MyHystrixObservableCommand(arg2).toObservable(),
(result1, result2) -> null)
.toBlocking()
.single()
and hystrix command semaphore release happens in doOnTerminate. One of them is not called and semaphore is not released.