← 输入框|github.com|刷新
Skip to content

java.lang.IllegalStateException: more items arrived than were requested #3892

Closed

Description

@vadims

We're seeing this exception for a small percent of our users. We haven't been able to reproduce this ourselves so providing a sample might not be feasible. Any idea what could be causing this based on the stacktrace alone?

Non-fatal Exception: java.lang.IllegalStateException: more items arrived than were requested
       at rx.internal.producers.ProducerArbiter.produced(ProducerArbiter.java:98)
       at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerCompleted(OnSubscribeConcatMap.java:206)
       at rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onCompleted(OnSubscribeConcatMap.java:345)
       at rx.internal.operators.OperatorMap$1.onCompleted(OperatorMap.java:43)
       at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:129)
       at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.onCompleted(OperatorTakeLastOne.java:107)
       at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:635)
       at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:547)
       at rx.internal.operators.OperatorMerge$MergeSubscriber.onCompleted(OperatorMerge.java:268)
       at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:47)
       at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:32)
       at rx.Observable$2.call(Observable.java:233)
       at rx.Observable$2.call(Observable.java:225)
       at rx.Observable$2.call(Observable.java:233)
       at rx.Observable$2.call(Observable.java:225)
       at rx.Observable$2.call(Observable.java:233)
       at rx.Observable$2.call(Observable.java:225)
       at rx.Observable$2.call(Observable.java:233)
       at rx.Observable$2.call(Observable.java:225)
       at rx.Observable.unsafeSubscribe(Observable.java:8741)
       at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
       at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerCompleted(OnSubscribeConcatMap.java:209)
       at rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onCompleted(OnSubscribeConcatMap.java:345)
       at rx.internal.operators.OperatorMap$1.onCompleted(OperatorMap.java:43)
       at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:125)
       at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.emit(OperatorTakeLastOne.java:159)
       at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.onCompleted(OperatorTakeLastOne.java:125)
       at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:635)
       at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:547)
       at rx.internal.operators.OperatorMerge$InnerSubscriber.onCompleted(OperatorMerge.java:836)
       at rx.internal.operators.OperatorMap$1.onCompleted(OperatorMap.java:43)
       at rx.internal.operators.OperatorSubscribeOn$1$1.onCompleted(OperatorSubscribeOn.java:68)
       at rx.internal.operators.OnSubscribeToObservableFuture$ToObservableFuture.call(OnSubscribeToObservableFuture.java:76)
       at rx.internal.operators.OnSubscribeToObservableFuture$ToObservableFuture.call(OnSubscribeToObservableFuture.java:43)
       at rx.Observable.unsafeSubscribe(Observable.java:8741)
       at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
       at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

Activity

  1. akarnokd commented on Apr 28, 2016

    @akarnokd
    Member

    Looks like OnSubscribeToObservableFuture was not refitted with backpressure support and it fires the future's value unconditionally. I'll post a fix for this. Thanks for reporting!

  2. akarnokd commented on Apr 28, 2016

    @akarnokd
    Member

    See #3893.

    Workaround for now: apply onBackpressureBuffer() after the from(Future) you are using.

  3. vadims commented on Apr 28, 2016

    @vadims
    ContributorAuthor

    Great, thanks!

  4. vadims commented on May 2, 2016

    @vadims
    ContributorAuthor

    I think there might be other operators that need to be retrofitted?

    Non-fatal Exception: java.lang.IllegalStateException: more items arrived than were requested
           at rx.internal.producers.ProducerArbiter.produced(ProducerArbiter.java:98)
           at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerCompleted(OnSubscribeConcatMap.java:206)
           at rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onCompleted(OnSubscribeConcatMap.java:345)
           at rx.internal.operators.OperatorMap$1.onCompleted(OperatorMap.java:43)
           at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:129)
           at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.onCompleted(OperatorTakeLastOne.java:107)
           at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:635)
           at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:547)
           at rx.internal.operators.OperatorMerge$MergeSubscriber.onCompleted(OperatorMerge.java:268)
           at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:47)
           at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:32)
           at rx.Observable$2.call(Observable.java:233)
           at rx.Observable$2.call(Observable.java:225)
           at rx.Observable$2.call(Observable.java:233)
           at rx.Observable$2.call(Observable.java:225)
           at rx.Observable$2.call(Observable.java:233)
           at rx.Observable$2.call(Observable.java:225)
           at rx.Observable$2.call(Observable.java:233)
           at rx.Observable$2.call(Observable.java:225)
           at rx.Observable.unsafeSubscribe(Observable.java:8741)
           at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
           at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.innerCompleted(OnSubscribeConcatMap.java:209)
           at rx.internal.operators.OnSubscribeConcatMap$ConcatMapInnerSubscriber.onCompleted(OnSubscribeConcatMap.java:345)
           at rx.internal.operators.OperatorMap$1.onCompleted(OperatorMap.java:43)
           at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:125)
           at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.emit(OperatorTakeLastOne.java:159)
           at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.onCompleted(OperatorTakeLastOne.java:125)
           at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:635)
           at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:547)
           at rx.internal.operators.OperatorMerge$InnerSubscriber.onCompleted(OperatorMerge.java:836)
           at rx.internal.operators.OperatorMap$1.onCompleted(OperatorMap.java:43)
           at rx.internal.operators.OperatorOnBackpressureBuffer$BufferSubscriber.complete(OperatorOnBackpressureBuffer.java:169)
           at rx.internal.util.BackpressureDrainManager.drain(BackpressureDrainManager.java:187)
           at rx.internal.util.BackpressureDrainManager.terminateAndDrain(BackpressureDrainManager.java:114)
           at rx.internal.operators.OperatorOnBackpressureBuffer$BufferSubscriber.onCompleted(OperatorOnBackpressureBuffer.java:140)
           at rx.internal.operators.OperatorSubscribeOn$1$1.onCompleted(OperatorSubscribeOn.java:68)
           at rx.internal.operators.OnSubscribeToObservableFuture$ToObservableFuture.call(OnSubscribeToObservableFuture.java:76)
           at rx.internal.operators.OnSubscribeToObservableFuture$ToObservableFuture.call(OnSubscribeToObservableFuture.java:43)
           at rx.Observable.unsafeSubscribe(Observable.java:8741)
           at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
           at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
           at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
           at java.util.concurrent.FutureTask.run(FutureTask.java:237)
           at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
           at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
           at java.lang.Thread.run(Thread.java:818)
  5. akarnokd commented on May 2, 2016

    @akarnokd
    Member

    Do you have a default value on your single() operator?

  6. vadims commented on May 2, 2016

    @vadims
    ContributorAuthor

    We call lastOrDefault which calls new OperatorSingle<T>(defaultValue).

  7. akarnokd commented on May 2, 2016

    @akarnokd
    Member

    Thanks, found the issue in OperatorSingle, when the default path is taken, the value is emitted without checking for backpressure. I'll post a fix soon.

  8. akarnokd commented on May 2, 2016

    @akarnokd
    Member

    See #3905.

  9. vadims commented on May 2, 2016

    @vadims
    ContributorAuthor

    Thanks!

  10. zsxwing commented on May 2, 2016

    @zsxwing
    Member

    Close via #3905

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions