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?
question from:
https://stackoverflow.com/questions/65927400/skipuntil-and-flatmap-with-concurrency-1-hangs-in-reactor 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…