Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Null pointer using ConcatMapEager on Android 4.2 #3508

Closed
jjvargas opened this issue Nov 9, 2015 · 8 comments
Closed

Null pointer using ConcatMapEager on Android 4.2 #3508

jjvargas opened this issue Nov 9, 2015 · 8 comments
Labels

Comments

@jjvargas
Copy link

jjvargas commented Nov 9, 2015

I am using a Tablet with Android 4.2 using 'io.reactivex:rxjava:1.0.15'

In Android 5.1 it works fine, but not it 4.2

public Observable<Artist[]> batchGetArtistsById(ArtistIdList artistIdList) {
        return Observable.from(artistIdList.getArtistIds())
                .concatMapEager(artist -> getArtistById(artist))
                .subscribeOn(Schedulers.io())
                .toList()
                .observeOn(AndroidSchedulers.mainThread())
                .doOnError(e ->
                        {
                            System.out.println("Error what to do? " + e);
                        }
                )
                .flatMap(artistList -> {
                    Artist[] artistsArray = artistList.toArray(new Artist[artistList.size()]);
                    return Observable.just(artistsArray);
                });
}

11-09 16:23:01.485 6762-6782/? E/AndroidRuntime: FATAL EXCEPTION: RxCachedThreadScheduler-1
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.ExceptionInInitializerError
at rx.internal.operators.OperatorEagerConcatMap$EagerInnerSubscriber.(OperatorEagerConcatMap.java:281)
at rx.internal.operators.OperatorEagerConcatMap$EagerOuterSubscriber.onNext(OperatorEagerConcatMap.java:130)
at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.fastpath(OnSubscribeFromIterable.java:127)
at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.request(OnSubscribeFromIterable.java:70)
at rx.Subscriber.setProducer(Subscriber.java:209)
at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:49)
at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:32)
at rx.Observable$2.call(Observable.java:162)
at rx.Observable$2.call(Observable.java:154)
at rx.Observable.unsafeSubscribe(Observable.java:8171)
at rx.internal.operators.OperatorSubscribeOn$1$1.call(OperatorSubscribeOn.java:62)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390) 
at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
at java.lang.Thread.run(Thread.java:856) 
Caused by: java.lang.NullPointerException
at rx.internal.util.unsafe.ConcurrentCircularArrayQueue.(ConcurrentCircularArrayQueue.java:51)
at rx.internal.operators.OperatorEagerConcatMap$EagerInnerSubscriber.(OperatorEagerConcatMap.java:281) 
at rx.internal.operators.OperatorEagerConcatMap$EagerOuterSubscriber.onNext(OperatorEagerConcatMap.java:130) 
at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.fastpath(OnSubscribeFromIterable.java:127) 
at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.request(OnSubscribeFromIterable.java:70) 
at rx.Subscriber.setProducer(Subscriber.java:209) 
at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:49) 
at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:32) 
at rx.Observable$2.call(Observable.java:162) 
at rx.Observable$2.call(Observable.java:154) 
at rx.Observable.unsafeSubscribe(Observable.java:8171) 
at rx.internal.operators.OperatorSubscribeOn$1$1.call(OperatorSubscribeOn.java:62) 
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390) 
at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
at java.lang.Thread.run(Thread.java:856) 

@akarnokd
Copy link
Member

akarnokd commented Nov 9, 2015

Do you, by any chance, have a Samsung device?

@akarnokd akarnokd added the Bug label Nov 9, 2015
@jjvargas
Copy link
Author

jjvargas commented Nov 9, 2015

Its a Custom Tablet , non branded .

On 9 November 2015 at 17:14, David Karnok notifications@github.com wrote:

Do you, by any chance, have a Samsung device?


Reply to this email directly or view it on GitHub
#3508 (comment).

@artem-zinnatullin
Copy link
Contributor

@akarnokd you can create Android 4.2 emulator (Android API level 17) and try to run tests (#3503) on it, or I'll do this tonight.

@jjvargas
Copy link
Author

jjvargas commented Nov 9, 2015

I tried with Genymotion I get the same error

On 9 November 2015 at 17:38, Artem Zinnatullin notifications@github.com
wrote:

@akarnokd https://github.com/akarnokd you can create Android 4.2
emulator (Android API level 17) and try to run tests (#3503
#3503) on it, or I'll do this
tonight.


Reply to this email directly or view it on GitHub
#3508 (comment).

@akarnokd
Copy link
Member

akarnokd commented Nov 9, 2015

My guess is that there is the same field error as with those Samsung devices so android.os.Build.VERSION.INT_VER is not properly discovered and the library thinks it runs on desktop Java.

@akarnokd
Copy link
Member

akarnokd commented Nov 9, 2015

Ups, my bad. Forgot to check the unsafe access in eager concatmap.

@akarnokd
Copy link
Member

akarnokd commented Nov 9, 2015

Fix posted in #3510

@akarnokd
Copy link
Member

Closing via #3510.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants