Skip to content

OperatorMerge - RxRingBuffer throws IllegalStateException again #2604

Closed
@davidmoten

Description

@davidmoten

With 1.0.5, I'm getting an IllegalStateException from OperatorMerge. This is repeatable for me but involves a big input data set being processed in chunks using flatMap/onSubscribe so I can't give you a quick test case yet. Hopefully just this description is enough otherwise I'll try and distill a test. I think it is happening close to completion.

java.lang.IllegalStateException: This instance has been unsubscribed and the queue is no longer usable.
        at rx.internal.util.RxRingBuffer.onNext(RxRingBuffer.java:346)
        at rx.internal.operators.OperatorMerge$InnerSubscriber.enqueue(OperatorMerge.java:721)
        at rx.internal.operators.OperatorMerge$InnerSubscriber.emit(OperatorMerge.java:698)
        at rx.internal.operators.OperatorMerge$InnerSubscriber.onNext(OperatorMerge.java:586)
        at rx.internal.operators.OperatorSubscribeOn$1$1$1.onNext(OperatorSubscribeOn.java:76)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.handleScalarSynchronousObservableWithRequestLimits(OperatorMerge.java:280)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.handleScalarSynchronousObservable(OperatorMerge.java:243)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:176)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:120)
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.handleScalarSynchronousObservableWithRequestLimits(OperatorMerge.java:280)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.handleScalarSynchronousObservable(OperatorMerge.java:243)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:176)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:120)
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55)
        at rx.internal.operators.NotificationLite.accept(NotificationLite.java:150)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.drainScalarValueQueue(OperatorMerge.java:396)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.drainQueuesIfNeeded(OperatorMerge.java:343)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.access$500(OperatorMerge.java:120)
        at rx.internal.operators.OperatorMerge$MergeProducer.request(OperatorMerge.java:549)
        at rx.Subscriber.request(Subscriber.java:130)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.drainQueuesIfNeeded(OperatorMerge.java:350)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.access$500(OperatorMerge.java:120)
        at rx.internal.operators.OperatorMerge$MergeProducer.request(OperatorMerge.java:549)
        at rx.Subscriber.request(Subscriber.java:130)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.drainQueuesIfNeeded(OperatorMerge.java:350)
        at rx.internal.operators.OperatorMerge$MergeSubscriber.access$500(OperatorMerge.java:120)
        at rx.internal.operators.OperatorMerge$MergeProducer.request(OperatorMerge.java:549)
        at rx.internal.operators.OperatorSubscribeOn$1$1$1$1$1.call(OperatorSubscribeOn.java:94)
        at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: au.gov.amsa.ais.Timestamped.class
        at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:98)
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:58)
        ... 27 more

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions