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?