- Notifications
You must be signed in to change notification settings - Fork 7.6k
Open
Labels
Description
Originally posted on StackOverflow.
The following code crashes with StackOverflowError and the stacktrace shows a long chain of request calls.
import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.schedulers.Schedulers import java.util.concurrent.TimeUnit.SECONDS fun main() { fun incr(n: Int): Single<Int> = Single.just(n + 1) fun numbers(n: Int, max: Int): Flowable<Int> = Flowable.just(n).concatWith( if (n < max) incr(n) .observeOn(Schedulers.single()) .toFlowable() .concatMap { next -> numbers(next, max) } else Flowable.empty() ) numbers(1, 10_000) .blockingForEach(::println) }Exception in thread "main" java.lang.StackOverflowError at io.reactivex.rxjava3.internal.subscriptions.SubscriptionArbiter.request(SubscriptionArbiter.java:135) at io.reactivex.rxjava3.internal.subscriptions.SubscriptionArbiter.request(SubscriptionArbiter.java:135) at io.reactivex.rxjava3.internal.operators.flowable.FlowableConcatMap$ConcatMapImmediate.request(FlowableConcatMap.java:215) at io.reactivex.rxjava3.internal.subscriptions.SubscriptionArbiter.request(SubscriptionArbiter.java:135) at io.reactivex.rxjava3.internal.subscriptions.SubscriptionArbiter.request(SubscriptionArbiter.java:135) at io.reactivex.rxjava3.internal.operators.flowable.FlowableConcatMap$ConcatMapImmediate.request(FlowableConcatMap.java:215) at io.reactivex.rxjava3.internal.subscriptions.SubscriptionArbiter.request(SubscriptionArbiter.java:135) at io.reactivex.rxjava3.internal.subscriptions.SubscriptionArbiter.request(SubscriptionArbiter.java:135) at io.reactivex.rxjava3.internal.operators.flowable.FlowableConcatMap$ConcatMapImmediate.request(FlowableConcatMap.java:215) I'm not sure why there is such a chain created and if this is a result of an RxJava bug or not.