Crash by OnErrorNotImplementedException
TangoHanks opened this issue · comments
FATAL EXCEPTION: RxNewThreadScheduler-1
io.reactivex.exceptions.OnErrorNotImplementedException: \n not found: limit=0 content=…
at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
at io.reactivex.internal.subscribers.LambdaSubscriber.onError(LambdaSubscriber.java:79)
at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:207)
at io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:392)
at io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.io.EOFException: \n not found: limit=0 content=…
at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:227)
at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:211)
at com.saladevs.rxsse.RxSSE$lines$1.accept(RxSSE.kt:46)
at com.saladevs.rxsse.RxSSE$lines$1.accept(RxSSE.kt:9)
at io.reactivex.internal.operators.flowable.FlowableInternalHelper$SimpleGenerator.apply(FlowableInternalHelper.java:44)
at io.reactivex.internal.operators.flowable.FlowableInternalHelper$SimpleGenerator.apply(FlowableInternalHelper.java:35)
at io.reactivex.internal.operators.flowable.FlowableGenerate$GeneratorSubscription.request(FlowableGenerate.java:109)
at io.reactivex.internal.operators.flowable.FlowableUsing$UsingSubscriber.request(FlowableUsing.java:158)
at io.reactivex.internal.operators.flowable.FlowableScanSeed$ScanSeedSubscriber.onSubscribe(FlowableScanSeed.java:101)
at io.reactivex.internal.operators.flowable.FlowableUsing$UsingSubscriber.onSubscribe(FlowableUsing.java:99)
at io.reactivex.internal.operators.flowable.FlowableGenerate.subscribeActual(FlowableGenerate.java:52)
at io.reactivex.Flowable.subscribe(Flowable.java:12994)
at io.reactivex.Flowable.subscribe(Flowable.java:12940)
at io.reactivex.internal.operators.flowable.FlowableUsing.subscribeActual(FlowableUsing.java:74)
at io.reactivex.Flowable.subscribe(Flowable.java:12994)
at io.reactivex.internal.operators.flowable.FlowableScanSeed.subscribeActual(FlowableScanSeed.java:52)
at io.reactivex.Flowable.subscribe(Flowable.java:12994)
at io.reactivex.internal.operators.flowable.FlowableFilter.subscribeActual(FlowableFilter.java:37)
at io.reactivex.Flowable.subscribe(Flowable.java:12994)
at io.reactivex.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:38)
at io.reactivex.Flowable.subscribe(Flowable.java:12994)
at io.reactivex.Flowable.subscribe(Flowable.java:12940)
at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:163)
at io.reactivex.internal.subscriptions.DeferredScalarSubscription.complete(DeferredScalarSubscription.java:133)
at io.reactivex.internal.operators.single.SingleToFlowable$SingleToFlowableObserver.onSuccess(SingleToFlowable.java:63)
at io.reactivex.internal.operators.single.SingleCreate$Emitter.onSuccess(SingleCreate.java:68)
at com.saladevs.rxsse.RxSSE$execute$1.subscribe(RxSSE.kt:31)
at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39)
at io.reactivex.Single.subscribe(Single.java:2779)
02-19 17:49:12.390 13289-13355/com.imtb.tb.dev E/AndroidRuntime: at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
at io.reactivex.Flowable.subscribe(Flowable.java:12994)
at io.reactivex.internal.operators.flowable.FlowableFlatMap.subscribeActual(FlowableFlatMap.java:53)
at io.reactivex.Flowable.subscribe(Flowable.java:12994)
at io.reactivex.Flowable.subscribe(Flowable.java:12940)
at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
... 7 more
kotlin_version = '1.1.51'
rxjava_version = '2.1.5'
okhttp_version = '3.9.0'
It seems that the SSE stream you are connecting to terminated but did not end in a new line:
Caused by: java.io.EOFException: \n not found: limit=0 content=…
Your code should handle possible errors, example:
rxsse
.connectTo("https://localhost/events")
.subscribe(
{ log.info("Received $it") },
{ log.error("Oops!", it) })
Let me know if this solves your issue. Please add your code if it doesn't.
RxSSE rxSSE = new RxSSE();
Request request = new Request.Builder().url(getSseApi())
.addHeader("Connection", "Keep-Alive")
.addHeader("Charset", "UTF-8").build();
disposable = rxSSE.connectTo(request)
.onBackpressureLatest()
.subscribeOn(Schedulers.io(), false)
.observeOn(Schedulers.newThread())
.subscribe(new Consumer<ServerSentEvent>() {
@Override
public void accept(ServerSentEvent serverSentEvent) throws Exception {
Log.d("test", "Received data:" + serverSentEvent.getData());
Log.d("test", "Received event:" + serverSentEvent.getEvent());
Log.d("test", "Received id:" + serverSentEvent.getLastId());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.d("test", "Received throwable:" + throwable.getMessage());
}
});
Hi EnricSala : i catched that throwable ,and its message showed:"D/test: Received throwable:\n not found: limit=0 content=…"
Hi EnricSala: it was fixed, that caused by serve cut down SSE stream . thanks a lot!
@TangoHanks im using
val client = OkHttpClient.Builder()
.readTimeout(10, TimeUnit.MINUTES)
.build()
val rxsse = RxSSE(client)