android10 / frodo

Android Library for Logging RxJava Observables and Subscribers.
1.48k stars 101 forks source link

Logs from onSubscribe() does not log which thread it happened in #25

Closed farmazon3000 closed 8 years ago

farmazon3000 commented 8 years ago

I'm using version

classpath "com.fernandocejas.frodo:frodo-plugin:0.8.2"

I have

@RxLogObservable
    Observable<String> createObservable(final String name){
        Log.d("createObservable " + name, "create " + Thread.currentThread().getName());
        return Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                Log.d("createObservable " + name, "create call " + Thread.currentThread().getName());
                subscriber.onNext(Thread.currentThread().getName());
                subscriber.onCompleted();
            }
        }).doOnSubscribe(new Action0() {
            @Override
            public void call() {
                Log.d("createObservable " + name, "create doOnSubscribe " + Thread.currentThread().getName());
            }
        });
    }

    @RxLogSubscriber
    class MySubscriber extends Subscriber<String>{

        String loglog;

        public MySubscriber(String loglog) {
            this.loglog = loglog;
        }

        @Override
        public void onCompleted() {
            Log.d("createObservable " + loglog, "onCompleted");
        }

        @Override
        public void onError(Throwable e) {
            Log.d("createObservable " + loglog, "onError " + e);
        }

        @Override
        public void onNext(String s) {
            Log.d("createObservable " + loglog, "onNext this thread " + Thread.currentThread().getName() + " Observable " + s);
        }
    }

then I call it with

createObservable(">1<")
                .observeOn(Schedulers.computation())
                .subscribeOn(Schedulers.computation())
                .subscribe(new MySubscriber(">1<"));

Output is:

Frodo => [@Observable :: @InClass -> GOApp :: @Method -> createObservable(name='>1<')]
createObservable >1<: create main
Frodo => [@Observable#createObservable -> onSubscribe()]
createObservable >1<: create doOnSubscribe RxComputationThreadPool-1
createObservable >1<: create call RxComputationThreadPool-1

While I expect this

Frodo => [@Observable :: @InClass -> GOApp :: @Method -> createObservable(name='>1<')]
createObservable >1<: create main
Frodo => [@Observable#createObservable -> onSubscribe() **RxComputationThreadPool-1**]
createObservable >1<: create doOnSubscribe RxComputationThreadPool-1
createObservable >1<: create call RxComputationThreadPool-1
farmazon3000 commented 8 years ago

I may be related to #4.

android10 commented 8 years ago

This should be fixed within the new version coming out next week. Thanks for reporting.

android10 commented 8 years ago

Closing since version 0.8.3 has been released. 😃 . Let's re open if the new version does not fix this problem.