Easier RxJava2 debugging with better stacktraces

Overview

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.
Comments
  • Upgrade to RxJava 2.2.1, fixes due to internal changes

    Upgrade to RxJava 2.2.1, fixes due to internal changes

    This PR upgrades the library to RxJava 2.2.1 and updates the code that depended on internal components, which have been changed in RxJava 2.2.1, making the release version of this library incompatible with 2.2.1.

    opened by akarnokd 6
  • Traceur fails when using retry

    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

    opened by mkoslacz 2
  • Fix crash when throwable cause is already initialized

    Fix crash when throwable cause is already initialized

    Issue

    When trying to append a TraceurException to a throwable which has already had it's cause initialised, an exception is thrown. See https://github.com/T-Spoon/Traceur/issues/7

    Resolution

    In this case, theres not much we can do to resolve the issue because Throwable#initCause is not designed to be called twice. So the fix in this PR uses the same logic as the RxJava2Extensions project by catching any exception and continuing. See https://github.com/akarnokd/RxJava2Extensions/blob/2ec72c9a317da02717d207f876ca5ba43768d802/src/main/java/hu/akarnokd/rxjava2/debug/RxJavaAssemblyException.java#L129

    opened by jonnyandrew 0
  • Add throwable listener feature

    Add throwable listener feature

    Additional info

    • Add the ability of register an error listener, the main thing here, is have the ability of log the error in some logger like crashlytics, sentry or something like that.
    • Moreover, I added a NONE log level in order to avoid possible performance issues for example in production
    opened by mirland 0
  • Traceur breaks retries

    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();
    
    opened by pwinckles 1
  • Lib is not compatible with RxJava 2.2.1

    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).

    opened by ultraon 3
  • Crashlytics not send reports

    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?

    opened by kovac777 2
  • TraceurException.appendTo crashes app

    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 thet.initCause(this);with a check againstt.getCause()`'s nullability

    I'll make a PR later with this

    opened by kassim 0
  • java.lang.IllegalStateException: Cause already initialized , cause crash!

    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)

    opened by microstudent 1
Owner
Oisin O'Neill
Oisin O'Neill
A surgical debugging tool to uncover the layers under your app.

Scalpel DEPRECATED! Android Studio 4.0's layout inspector now includes a live-updating 3D view. Use it! A surgical debugging tool to uncover the layer

Jake Wharton 2.8k Jan 9, 2023
traffic debugging library for android

TrafficMonitor About Display traffic per Activity.Observing traffic is used by TrafficStats API. OkHttp Interceptor observer is implementing. Demo Bai

Tetsuya Masuda 17 Feb 4, 2022
A model-agnostic visual debugging tool for machine learning

Manifold This project is stable and being incubated for long-term support. Manifold is a model-agnostic visual debugging tool for machine learning. Un

Uber Open Source 1.6k Dec 25, 2022
Pluto: An on-device debugging framework for Android applications

Pluto is an on-device debugging framework for Android applications, which helps in the inspection of HTTP requests/responses, captures Crashes, and ANRs, and manipulates application data on the go.

Pluto 550 Dec 27, 2022
A library for debugging android databases and shared preferences - Make Debugging Great Again

Android Debug Database Android Debug Database is a powerful library for debugging databases and shared preferences in Android applications Android Deb

AMIT SHEKHAR 8.1k Dec 29, 2022
Library that makes debugging, log collection, filtering and analysis easier.

AndroidLogger Android Library that makes debugging, log collection, filtering and analysis easier. Contains 2 modules: Logger: 'com.github.ShiftHackZ.

ShiftHackZ 2 Jul 13, 2022
Android runtime permissions powered by RxJava2

RxPermissions This library allows the usage of RxJava with the new Android M permission model. Setup To use this library your minSdkVersion must be >=

Thomas Bruyelle 10.4k Jan 8, 2023
Demo of Downloading Songs/Images through Android Download Manager using RxJava2

Downloader Demo using RxJava Overview This project is for downloading items(songs, images etc) in Android using RxJava2. There are, however 2 conditio

Anshul Jain 168 Nov 25, 2022
Android gallery & photo/video functionality simplified with RxJava2

RxGallery Android gallery & photo/video functionality simplified with RxJava2 Setup To use this library your minSdkVersion must be >= 9. Add it in you

Brian Rojas 38 Oct 11, 2022
An Android Library that provides social login for 15 platforms within by RxJava2, Kotlin and Firebase Authentication.

RxSocialLogin The license information for logo is located at the bottom of the document. These instructions are available in their respective language

WindSekirun (wind.seo) 124 Nov 21, 2022
A surgical debugging tool to uncover the layers under your app.

Scalpel DEPRECATED! Android Studio 4.0's layout inspector now includes a live-updating 3D view. Use it! A surgical debugging tool to uncover the layer

Jake Wharton 2.8k Jan 9, 2023
an android library for debugging what we care about directly in app.

EN | 中文 Pandora is a tool box that allows you to inspect and modify what includes networks, databases, UIs, etc. directly in your application. It is s

linjiang 1.5k Dec 30, 2022
traffic debugging library for android

TrafficMonitor About Display traffic per Activity.Observing traffic is used by TrafficStats API. OkHttp Interceptor observer is implementing. Demo Bai

Tetsuya Masuda 17 Feb 4, 2022
Utility logger library for storing logs into database and push them to remote server for debugging

HyperLog Android Overview Log format Download Initialize Usage Get Logs in a File Push Logs Files to Remote Server Sample Testing Endpoint using Reque

HyperTrack 675 Nov 14, 2022
A surgical debugging tool to uncover the layers under your app.

Scalpel DEPRECATED! Android Studio 4.0's layout inspector now includes a live-updating 3D view. Use it! A surgical debugging tool to uncover the layer

Jake Wharton 2.8k Jan 3, 2023
Extendable MVI framework for Kotlin Multiplatform with powerful debugging tools (logging and time travel), inspired by Badoo MVICore library

Should you have any questions or ideas please welcome to the Slack channel: #mvikotlin Inspiration This project is inspired by Badoo MVICore library.

Arkadii Ivanov 460 Dec 31, 2022
A model-agnostic visual debugging tool for machine learning

Manifold This project is stable and being incubated for long-term support. Manifold is a model-agnostic visual debugging tool for machine learning. Un

Uber Open Source 1.6k Dec 25, 2022
Pluto: An on-device debugging framework for Android applications

Pluto is an on-device debugging framework for Android applications, which helps in the inspection of HTTP requests/responses, captures Crashes, and ANRs, and manipulates application data on the go.

Pluto 550 Dec 27, 2022
Cross-platform GUI gRPC debugging proxy like charles but design for gRPC

Mediator Cross-platform GUI gRPC debugging proxy like charles but design for gRPC. Build with Netty (proxy protocol), Compose Desktop (GUI), Sisyphus

null 81 Dec 28, 2022
This is an IDEA plugin that allows you to connect Android devices via WiFi for debugging your codes.

AdbWifiUtils Github | Issues | README | 中文文档 ● [Description]: This is an IDEA plugin that allows you to connect Android devices via WiFi for debugging

AWeiLoveAndroid 3 Sep 19, 2022