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

Exceptions #33

Open
JajaComp opened this issue Feb 22, 2018 · 3 comments
Open

Exceptions #33

JajaComp opened this issue Feb 22, 2018 · 3 comments

Comments

@JajaComp
Copy link

Hi! I have problem with next:

  1. I do close connect with BluetoothConnection and recive next exception to RX onError ->
    com.github.ivbaranov.rxbluetooth.exceptions.ConnectionClosedException Can't read stream
    at com.github.ivbaranov.rxbluetooth.BluetoothConnection$1.subscribe(BluetoothConnection.java88)
    at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java72)
    at io.reactivex.Flowable.subscribe(Flowable.java13234)
    at io.reactivex.internal.operators.flowable.FlowablePublish.connect(FlowablePublish.java130)
    at io.reactivex.internal.operators.flowable.FlowableRefCount.subscribeActual(FlowableRefCount.java138)
    at io.reactivex.Flowable.subscribe(Flowable.java13234)
    at io.reactivex.Flowable.subscribe(Flowable.java13183)
    at io.reactivex.internal.operators.flowable.FlowableLift.subscribeActual(FlowableLift.java49)
    at io.reactivex.Flowable.subscribe(Flowable.java13234)
    at io.reactivex.internal.operators.flowable.FlowableOnBackpressureBuffer.subscribeActual(FlowableOnBackpressureBuffer.java46)
    at io.reactivex.Flowable.subscribe(Flowable.java13234)

  2. I do dispose to observeStringStream
    I again received above error in main thread.

@JajaComp
Copy link
Author

Please fix problem with "UndeliverableException".
E/UncaughtException: io.reactivex.exceptions.UndeliverableException: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:74)
at com.github.ivbaranov.rxbluetooth.RxBluetooth$9$1.subscribe(RxBluetooth.java:514)
at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:40)
at io.reactivex.Observable.subscribe(Observable.java:11442)
at io.reactivex.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:39)
at io.reactivex.Observable.subscribe(Observable.java:11442)

I recive this error if use dispose before connect to device with error.
https://stackoverflow.com/questions/43525052/rxjava2-observable-take-throws-undeliverableexception

@JajaComp
Copy link
Author

Maybe replace onError to tryOnError

@NunciosChums
Copy link

Use 'RxJavaPlugins.setErrorHandler()`

fun connect(){
  rxBluetooth.observeConnectionState()
      .filter { it.state == BluetoothAdapter.STATE_CONNECTED }
      .subscribe(
        { onConnected() },
        { it.printStackTrace() })

  rxBluetooth.observeConnectionState()
      .filter { it.state == BluetoothAdapter.STATE_DISCONNECTED }
      .subscribe(
        { onDisconnected() },
        { it.printStackTrace() })
}

fun onConnected() {
  readDisposable = bluetoothConnection.observeByteStream()
      .subscribeOn(Schedulers.computation())
      .subscribe(
        { 
          // do something
         },
        { it.printStackTrace() })

    bluetoothConnection.send("111")
}

fun onDisconnected(){
  readDisposable.dispose()
}

then go to Bluetooth setup on phone -> tap connected device -> disconnect -> power off device -> app crash

W: io.reactivex.exceptions.UndeliverableException: com.github.ivbaranov.rxbluetooth.exceptions.ConnectionClosedException: Can't read stream
W:     at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
W:     at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onError(FlowableCreate.java:276)
W:     at com.github.ivbaranov.rxbluetooth.BluetoothConnection$1.subscribe(BluetoothConnection.java:90)
W:     at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:72)
W:     at io.reactivex.Flowable.subscribe(Flowable.java:14409)
W:     at io.reactivex.internal.operators.flowable.FlowablePublish.connect(FlowablePublish.java:130)
W:     at io.reactivex.internal.operators.flowable.FlowableRefCount.subscribeActual(FlowableRefCount.java:91)
W:     at io.reactivex.Flowable.subscribe(Flowable.java:14409)
W:     at io.reactivex.Flowable.subscribe(Flowable.java:14356)
W:     at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
W:     at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
W:     at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
W:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
W:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
W:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
W:     at java.lang.Thread.run(Thread.java:761)
W: Caused by: com.github.ivbaranov.rxbluetooth.exceptions.ConnectionClosedException: Can't read stream
W: 	... 15 more
W: Caused by: java.io.IOException: bt socket closed, read return: -1
W:     at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:588)
W:     at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:60)
W:     at com.github.ivbaranov.rxbluetooth.BluetoothConnection$1.subscribe(BluetoothConnection.java:87)
W: 	... 14 more

E: FATAL EXCEPTION: RxComputationThreadPool-3
    Process: kr.co.bluec.mate, PID: 7088
    io.reactivex.exceptions.UndeliverableException: com.github.ivbaranov.rxbluetooth.exceptions.ConnectionClosedException: Can't read stream
        at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
        at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onError(FlowableCreate.java:276)
        at com.github.ivbaranov.rxbluetooth.BluetoothConnection$1.subscribe(BluetoothConnection.java:90)
        at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:72)
        at io.reactivex.Flowable.subscribe(Flowable.java:14409)
        at io.reactivex.internal.operators.flowable.FlowablePublish.connect(FlowablePublish.java:130)
        at io.reactivex.internal.operators.flowable.FlowableRefCount.subscribeActual(FlowableRefCount.java:91)
        at io.reactivex.Flowable.subscribe(Flowable.java:14409)
        at io.reactivex.Flowable.subscribe(Flowable.java:14356)
        at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
        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: com.github.ivbaranov.rxbluetooth.exceptions.ConnectionClosedException: Can't read stream
        at com.github.ivbaranov.rxbluetooth.BluetoothConnection$1.subscribe(BluetoothConnection.java:90) 
        at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:72) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14409) 
        at io.reactivex.internal.operators.flowable.FlowablePublish.connect(FlowablePublish.java:130) 
        at io.reactivex.internal.operators.flowable.FlowableRefCount.subscribeActual(FlowableRefCount.java:91) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14409) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14356) 
        at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 
        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.IOException: bt socket closed, read return: -1
        at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:588)
        at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:60)
        at com.github.ivbaranov.rxbluetooth.BluetoothConnection$1.subscribe(BluetoothConnection.java:87)
        at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:72) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14409) 
        at io.reactivex.internal.operators.flowable.FlowablePublish.connect(FlowablePublish.java:130) 
        at io.reactivex.internal.operators.flowable.FlowableRefCount.subscribeActual(FlowableRefCount.java:91) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14409) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14356) 
        at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 
        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) 

so I add RxJavaPlugins.setErrorHandler { it.printStackTrace() } to 'inherit Application class` then fixed it.

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

No branches or pull requests

2 participants