Когда я запускаю Single как blockingGet с тайм-аутом, если происходит тайм-аут, генерируется исключение UndeliverableException.Что я делаю не так, как решить эту проблему.
Boolean discoverable = checkUserDiscoverability(receiver)
.timeout(30, TimeUnit.SECONDS)
.blockingGet();
private Single<Boolean> checkUserDiscoverability(String loopUser) {
return Single
.create(emitter -> {
Thread.sleep(60*1000);
firebaseFirestore
.collection(Constants.USERS)
.whereEqualTo(FieldPath.documentId(), loopUser)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (!task.isSuccessful()) {
emitter.onSuccess(false);
}
if(task.getResult().isEmpty())
emitter.onSuccess(false);
else
emitter.onSuccess(true);
}
});
});
}
Сведения об исключении.
W/System.err: io.reactivex.exceptions.UndeliverableException: java.lang.RuntimeException: java.util.concurrent.TimeoutException
W/System.err: at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:366)
W/System.err: at io.reactivex.internal.observers.ConsumerSingleObserver.onSuccess(ConsumerSingleObserver.java:66)
W/System.err: at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:56)
W/System.err: at io.reactivex.Single.subscribe(Single.java:3096)
W/System.err: at io.reactivex.Single.subscribe(Single.java:3082)
W/System.err: at tasks.worker.FindNewFriendsWorker.doWork(FindNewFriendsWorker.java:62)