GithubHelp home page GithubHelp logo

traceur's Introduction

Traceur

Traceur enables easier debugging of RxJava2 exceptions, by appending the source of any asynchronous calls to the original exception.

An example RxJava exception:

The same exception with Traceur enabled:

Notice that the call site of the asynchronous call is linked in the stack trace (SplashPresenter).

RxJava1 had a similar feature included by default, RxJavaHooks.enableAssemblyTracking(), but RxJava2 has no such feature unfortunately.

Usage

Enable logging:

Traceur.enableLogging();

Disable logging:

Traceur.disableLogging();

Download

compile 'com.tspoon.traceur:traceur:1.0.1'

Thanks

Thanks to David Karnok - this project is largely just an enhancement of his RxJava2Extensions project, making it slightly easier to consume as a developer

License

Copyright 2017 Oisín O'Neill

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

traceur's People

Contributors

t-spoon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

traceur's Issues

Traceur causing `StackOverflowError` on too complex `CompositeException`

Hi,

Recently I have encountered a problem using Traceur on Android.

In my project I sometimes got OOM errors when trying to log too complex CompositeExceptions from external components using Android Log.e method. To avoid it I strip these exceptions to have 5 original exceptions max using stripCompositeException method included in the gist I linked at the end of this issue.

In the regular setup this approach works correctly, but using Traceur, on less performant devices and older apis that have older memory management alghoritms (in my case API 17) I got uncaught StackOverflowError that crashes my app. I include the error I'm encountering in the attached test case:

07-01 12:42:09.746 2489-2489/pl.videostar E/AndroidRuntime: FATAL EXCEPTION: main
                                                            java.lang.StackOverflowError
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:71)
                                                                at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                                at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                                at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                                at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                                at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onSubscribe(ObservableDoOnEach.java:73)
                                                                at io.reactivex.internal.observers.BasicFuseableObserver.onSubscribe(BasicFuseableObserver.java:66)
                                                                at io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:34)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssemblyScalarCallable.subscribeActual(ObservableOnAssemblyScalarCallable.java:40)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:43)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:43)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:43)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:43)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:43)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:43)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                                at com.tspoon.traceur.ObservableOnAssembly.subscribeActual(ObservableOnAssembly.java:43)
                                                                at io.reactivex.Observable.subscribe(Observable.java:10842)
                                                            	at io.reactivex.internal.operators.observable.ObservableDoOnEach.su

Although, on API 25 Traceur won't crash the app and will log the excepton correctly, but still, in such case the printed stacktrace is so huge that it fills up whole Android Logcat console and eventually breaks it withread: unexpected EOF! what also makes logging useless.

Is it possible to create some constraints in Traceur that would prevent such issues?

I have created the test case here. Let me know if you wouldn't be able to reproduce the issue.

Thanks!

Just want to say Thank you for you lib. Helped me to hunt down a very hard to find bug.

Traceur breaks retries

Traceur produces a NoSuchFieldError exception on retry(). I'm using RxJava 2.2.1 I haven't tried older versions. Here's the code to reproduce the issue:

        Traceur.enableLogging();
        Single.defer(() -> {
            return Single.error(new RuntimeException());
        }).retry(3).blockingGet();

Crashlytics not send reports

Hello guys! I'm facing with one problem using Traceur. When I call Traceur.enableLogging(); then Crashlytics don`t send reports!

Any suggestions how I can workaround it?

Lib is not compatible with RxJava 2.2.1

From RxJava 2.2.1 this lib is not compatible any more.
The issue is in renamed fields in RxJava2
BasicFuseableObserver.qs (was renamed to BasicFuseableObserver.qd)
and
BasicFuseableObserver.actual (was renamed to BasicFuseableObserver.downstream).

Traceur fails when using retry

Hi,

I have encountered a bug when you use Observable.retry() with a Traceur logging on. There is a java.lang.IllegalArgumentException: Self-causation not permitted in such case.

I have created a gist that showcases the issue, it's available here.

Best regards,

Mateusz

TraceurException.appendTo crashes app

So your code in TraceurException is

    public Throwable appendTo(Throwable throwable) {
        Throwable t = throwable;
        while (t.getCause() != null) {
            t = t.getCause();

            // Won't be able to init the cause of this with self
            if (t == this) {
                return throwable;
            }

            if (logLevel == LogLevel.SHOW_ONLY_FIRST && t instanceof TraceurException) {
                return throwable;
            }
        }

        t.initCause(this);

        return throwable;
    }

but the code inside Throwable is

    public synchronized Throwable initCause(Throwable cause) {
        if (this.cause != this)
            throw new IllegalStateException("Can't overwrite cause with " +
                                            Objects.toString(cause, "a null"), this);
        if (cause == this)
            throw new IllegalArgumentException("Self-causation not permitted", this);
        this.cause = cause;
        return this;
    }

This means the appendTo function will cause an exception to be thrown if a Throwable's cause is ever found to be null.

Possible solution
while (t.getCause() != null) should be while (t.getCause() != null && t.getCause() != t) and wrap the t.initCause(this);with a check againstt.getCause()`'s nullability

I'll make a PR later with this

java.lang.IllegalStateException: Cause already initialized , cause crash!

Hi, I am trying to use Traceur in my project, it work fine until it cause an crash. It crash on Subscriber.onError(), so Rxjava cannot handle it anymore.
After disabling Traceur, it just logout the error and doesn't crash.

It happened when I used Charles to capture some https request without import certificate.
there is the crash log:


08-23 14:59:31.629 W/System.err(18773): ComposedException 1 : 08-23 14:59:31.629 W/System.err(18773): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 08-23 14:59:31.629 W/System.err(18773): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:333) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:281) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:251) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:151) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:195) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 08-23 14:59:31.629 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.630 D/libc-netbsd(18773): [getaddrinfo]: mtk hostname=abc.xxx.com; servname=(null); netid=0; mark=0 08-23 14:59:31.630 W/System.err(18773): at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:211) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.630 D/libc-netbsd(18773): getaddrinfo( app_uid:10117 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.630 W/System.err(18773): at com.xxxx.data.net.intercept.CacheInterceptor.intercept(CacheInterceptor.java:27) 08-23 14:59:31.630 D/libc-netbsd(18773): getaddrinfo() uid prop: 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.630 D/libc-netbsd(18773): getaddrinfo() getuid():10117 08-23 14:59:31.630 W/System.err(18773): at com.xxx.okhttp.GslbHttpClient.performRequest(GslbHttpClient.java:34) 08-23 14:59:31.630 D/libc-netbsd(18773): [getaddrinfo]: mtk ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0 08-23 14:59:31.630 W/System.err(18773): at com.xxx.HttpClientProxy.performRequest(HttpClientProxy.java:86) 08-23 14:59:31.630 W/System.err(18773): at com.xxx.okhttp.GslbInterceptor.intercept(GslbInterceptor.java:36) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185) 08-23 14:59:31.630 W/System.err(18773): at okhttp3.RealCall.execute(RealCall.java:69) 08-23 14:59:31.630 W/System.err(18773): at retrofit2.OkHttpCall.execute(OkHttpCall.java:180) 08-23 14:59:31.630 W/System.err(18773): at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:41) 08-23 14:59:31.630 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.630 D/NativeCrypto(18773): ssl=0xd90e9800 NativeCrypto_SSL_do_handshake fd=0xdb08efc0 shc=0xdb08efc4 timeout_millis=30000 client_mode=1 npn=0x0 08-23 14:59:31.630 W/System.err(18773): at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34) 08-23 14:59:31.630 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.630 D/NativeCrypto(18773): doing handshake ++ 08-23 14:59:31.630 W/System.err(18773): at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96) 08-23 14:59:31.630 W/System.err(18773): at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) 08-23 14:59:31.630 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback where=0x10 ret=1 08-23 14:59:31.630 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) 08-23 14:59:31.630 D/NativeCrypto(18773): ssl=0xd90e9800 handshake start in CINIT before connect initialization 08-23 14:59:31.630 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) 08-23 14:59:31.630 W/System.err(18773): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 08-23 14:59:31.630 W/System.err(18773): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) 08-23 14:59:31.630 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback calling handshakeCompleted 08-23 14:59:31.630 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 08-23 14:59:31.630 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 08-23 14:59:31.630 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback completed 08-23 14:59:31.630 W/System.err(18773): at java.lang.Thread.run(Thread.java:818) 08-23 14:59:31.630 W/System.err(18773): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 08-23 14:59:31.630 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback where=0x1001 ret=1 08-23 14:59:31.630 W/System.err(18773): at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:324) 08-23 14:59:31.630 D/NativeCrypto(18773): ssl=0xd90e9800 SSL_connect:CINIT before connect initialization 08-23 14:59:31.630 W/System.err(18773): at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:225) 08-23 14:59:31.631 W/System.err(18773): at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:115) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback ignored 08-23 14:59:31.631 W/System.err(18773): at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:571) 08-23 14:59:31.631 W/System.err(18773): at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 08-23 14:59:31.631 W/System.err(18773): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:329) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:281) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:251) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:151) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:195) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback where=0x1001 ret=1 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 SSL_connect:3WCH_A SSLv3 write client hello A 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback ignored 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback where=0x1002 ret=-1 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 SSL_connect:error exit in 3RSH_A SSLv3 read server hello A 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 info_callback ignored 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:211) 08-23 14:59:31.631 D/NativeCrypto(18773): doing handshake -- ret=-1 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.631 W/System.err(18773): at com.xxxx.data.net.intercept.CacheInterceptor.intercept(CacheInterceptor.java:27) 08-23 14:59:31.631 D/NativeCrypto(18773): ssl=0xd90e9800 NativeCrypto_SSL_do_handshake ret=-1 errno=11 sslError=2 timeout_millis=30000 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.631 W/System.err(18773): at com.xxx.okhttp.GslbHttpClient.performRequest(GslbHttpClient.java:34) 08-23 14:59:31.631 W/System.err(18773): at com.xxx.HttpClientProxy.performRequest(HttpClientProxy.java:86) 08-23 14:59:31.631 W/System.err(18773): at com.xxx.okhttp.GslbInterceptor.intercept(GslbInterceptor.java:36) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185) 08-23 14:59:31.631 W/System.err(18773): at okhttp3.RealCall.execute(RealCall.java:69) 08-23 14:59:31.631 W/System.err(18773): at retrofit2.OkHttpCall.execute(OkHttpCall.java:180) 08-23 14:59:31.631 W/System.err(18773): at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:41) 08-23 14:59:31.631 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.631 W/System.err(18773): at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34) 08-23 14:59:31.632 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.632 W/System.err(18773): at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96) 08-23 14:59:31.632 W/System.err(18773): at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) 08-23 14:59:31.632 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) 08-23 14:59:31.632 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) 08-23 14:59:31.632 W/System.err(18773): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 08-23 14:59:31.632 W/System.err(18773): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) 08-23 14:59:31.632 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 08-23 14:59:31.632 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 08-23 14:59:31.632 W/System.err(18773): at java.lang.Thread.run(Thread.java:818) 08-23 14:59:31.632 W/System.err(18773): Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 08-23 14:59:31.632 W/System.err(18773): at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:324) 08-23 14:59:31.632 W/System.err(18773): at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:225) 08-23 14:59:31.632 W/System.err(18773): at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:115) 08-23 14:59:31.632 W/System.err(18773): at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:571) 08-23 14:59:31.632 W/System.err(18773): at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 08-23 14:59:31.632 W/System.err(18773): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:329) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:281) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:251) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:151) 08-23 14:59:31.632 D/ConnectivityService( 1155): getActiveNetworkInfo networkInfo = [type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "xx-xxx-2.4G", roaming: false, failover: false, isAvailable: true] 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:195) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:211) 08-23 14:59:31.632 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.633 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.633 W/System.err(18773): at com.xxxx.data.net.intercept.CacheInterceptor.intercept(CacheInterceptor.java:27) 08-23 14:59:31.633 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.633 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.633 W/System.err(18773): at com.xxx.okhttp.GslbHttpClient.performRequest(GslbHttpClient.java:34) 08-23 14:59:31.633 W/System.err(18773): at com.xxx.HttpClientProxy.performRequest(HttpClientProxy.java:86) 08-23 14:59:31.633 W/System.err(18773): at com.xxx.okhttp.GslbInterceptor.intercept(GslbInterceptor.java:36) 08-23 14:59:31.633 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 08-23 14:59:31.633 W/System.err(18773): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 08-23 14:59:31.633 W/System.err(18773): at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185) 08-23 14:59:31.633 W/System.err(18773): at okhttp3.RealCall.execute(RealCall.java:69) 08-23 14:59:31.633 W/System.err(18773): at retrofit2.OkHttpCall.execute(OkHttpCall.java:180) 08-23 14:59:31.633 W/System.err(18773): at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:41) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.633 W/System.err(18773): at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) 08-23 14:59:31.633 W/System.err(18773): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 08-23 14:59:31.633 W/System.err(18773): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) 08-23 14:59:31.633 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 08-23 14:59:31.633 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 08-23 14:59:31.633 W/System.err(18773): at java.lang.Thread.run(Thread.java:818) 08-23 14:59:31.633 W/System.err(18773): ComposedException 2 : 08-23 14:59:31.633 W/System.err(18773): java.lang.IllegalStateException: Cause already initialized 08-23 14:59:31.633 W/System.err(18773): at com.tspoon.traceur.ObservableOnAssembly$OnAssemblyObserver.onError(ObservableOnAssembly.java:62) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onError(ObservableSubscribeOn.java:63) 08-23 14:59:31.633 W/System.err(18773): at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onError(BodyObservable.java:72) 08-23 14:59:31.633 W/System.err(18773): at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:55) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.633 W/System.err(18773): at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.Observable.subscribe(Observable.java:10901) 08-23 14:59:31.633 W/System.err(18773): at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96) 08-23 14:59:31.634 W/System.err(18773): at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) 08-23 14:59:31.634 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) 08-23 14:59:31.634 W/System.err(18773): at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) 08-23 14:59:31.634 W/System.err(18773): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 08-23 14:59:31.634 W/System.err(18773): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) 08-23 14:59:31.634 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 08-23 14:59:31.634 W/System.err(18773): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 08-23 14:59:31.634 W/System.err(18773): at java.lang.Thread.run(Thread.java:818)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.