The following test occasionally fails (about 200 out of 1000 fail):
@Test
fun test() {
var t: Throwable? = null
RxJavaPlugins.setErrorHandler { t = it }
Observable.timer(0L, MILLISECONDS).blockingFirst()
t?.let { throw it }
}
Stacktrace:
java.lang.IllegalStateException: Disposable already set!
at io.reactivex.internal.disposables.DisposableHelper.reportDisposableSet(DisposableHelper.java:144)
at io.reactivex.internal.disposables.DisposableHelper.setOnce(DisposableHelper.java:70)
at io.reactivex.internal.operators.observable.ObservableTimer$IntervalOnceObserver.setResource(ObservableTimer.java:74)
at io.reactivex.internal.operators.observable.ObservableTimer.subscribeActual(ObservableTimer.java:40)
at io.reactivex.Observable.subscribe(Observable.java:10514)
at io.reactivex.Observable.blockingFirst(Observable.java:4535)
at myapp.MyTest.test(MyTest.kt:15)
Whenever the test fails, IntervalOnceObserver#setResource is called _after_ it is disposed.
Thanks for reporting. If the emission happens before the setResource call, the setResource will find the wrong reference there and complain about it. I'll fix it shortly.
Closing via #4927
Tried v2.0.2 in production and seeing a lot of these crashes come up. I know this has been fixed, but do we have an ETA for v2.0.4? Thank you.