greenrobot / ObjectBoxRxJava

Optional RxJava 2 APIs for ObjectBox
Apache License 2.0
71 stars 8 forks source link

NPE is when using with .single() query #7

Closed tadas-subonis closed 6 years ago

tadas-subonis commented 6 years ago

I am getting this:

java.lang.NullPointerException: Attempt to invoke interface method 'void io.objectbox.reactive.DataSubscription.cancel()' on a null object reference
                      at io.objectbox.query.QueryPublisher.unsubscribe(QueryPublisher.java:105)
                      at io.objectbox.reactive.DataSubscriptionImpl.cancel(DataSubscriptionImpl.java:37)
                      at io.objectbox.rx.RxQuery$5$2.cancel(RxQuery.java:127)
                      at io.reactivex.internal.disposables.CancellableDisposable.dispose(CancellableDisposable.java:49)
                      at io.reactivex.internal.operators.single.SingleCreate$Emitter.onSuccess(SingleCreate.java:72)
                      at io.objectbox.rx.RxQuery$5$1.onData(RxQuery.java:120)
                      at io.objectbox.rx.RxQuery$5$1.onData(RxQuery.java:116)
                      at io.objectbox.query.QueryPublisher$2.run(QueryPublisher.java:84)
                      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:266)

The request looks like this:

        Query<Item> query = itemBox.query()
                .build();

        return RxQuery.single(query)
                .toObservable()
                .flatMap(items -> Observable.fromIterable(items));
greenrobot-team commented 6 years ago

Hm, only seeing this in tests when subscribing to a Single (RxQuery.single(query).subscribe(...).

java.lang.NullPointerException
    at io.objectbox.query.QueryPublisher.unsubscribe(QueryPublisher.java:105)
    at io.objectbox.reactive.DataSubscriptionImpl.cancel(DataSubscriptionImpl.java:37)
    at io.objectbox.rx.RxQuery$5$2.cancel(RxQuery.java:127)
    at io.reactivex.internal.disposables.CancellableDisposable.dispose(CancellableDisposable.java:49)
    at io.reactivex.internal.operators.single.SingleCreate$Emitter.onSuccess(SingleCreate.java:72)
    at io.objectbox.rx.RxQuery$5$1.onData(RxQuery.java:120)
    at io.objectbox.rx.RxQuery$5$1.onData(RxQuery.java:116)
    at io.objectbox.query.QueryPublisher$2.run(QueryPublisher.java:84)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Exception in thread "ObjectBox-2-Thread-1" java.lang.NullPointerException
    at io.objectbox.query.QueryPublisher.unsubscribe(QueryPublisher.java:105)
    at io.objectbox.reactive.DataSubscriptionImpl.cancel(DataSubscriptionImpl.java:37)
    at io.objectbox.rx.RxQuery$5$2.cancel(RxQuery.java:127)
    at io.reactivex.internal.disposables.CancellableDisposable.dispose(CancellableDisposable.java:49)
    at io.reactivex.internal.operators.single.SingleCreate$Emitter.onSuccess(SingleCreate.java:72)
    at io.objectbox.rx.RxQuery$5$1.onData(RxQuery.java:120)
    at io.objectbox.rx.RxQuery$5$1.onData(RxQuery.java:116)
    at io.objectbox.query.QueryPublisher$2.run(QueryPublisher.java:84)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

The issue is that RxQuery.single() wants to cancel the created subscription. But this fails because it was never subscribed in the first place. Fix is on the way. -ut

slickorange commented 6 years ago

I am still seeing this error - I assume the fix is not part of the latest release yet?

greenrobot-team commented 6 years ago

@slickorange The fix in #9 is still awaiting review. -ut

Queatz commented 6 years ago

Are we going to get a hotfix release for this. I tried 0.9.9-SNAPSHOT but it doesn't resolve.

greenrobot-team commented 6 years ago

@Queatz Just moved this project to become a part of objectbox-java (#12). You should expect a new release as part of the next ObjectBox 2.0.0 beta. -ut