5

I have experienced a strange behavior in Reactor (v. 3.4.2) when using skipUntil and flatMap(fn, concurrency) operators with concurrency=1. The pipeline hangs.

To demonstrate what I mean here is a short example that works as I would expect:

Flux.range(1, 5)
    .skipUntil(v -> v > 1)
    .flatMap(v -> Mono.just(v))
    .doOnNext(System.out::println)
    .blockLast();

It prints 2, 3, 4 and 5 to a separate line. However, if I add a concurrency argument equal to 1 to the flatMap operator then the execution hangs:

Flux.range(1, 5)
    .skipUntil(v -> v > 1)
    .flatMap(v -> Mono.just(v), 1)
    .doOnNext(System.out::println)
    .blockLast();

I don't know if I missed something or there is some erroneous behavior of skipUntil that after it skips the first item it does not request next from the upstream. Is the second example valid?

0 Answers0