Skip to content

2.x: refCount doesn't reset its source if one of its subscribers cancels immediately #6296

Closed

Description

@akarnokd

The following tests fail because the cancel/dispose from the downstream comes before the actual connection is established which leaves the connectable source in a disposed state, refusing to take in new subscribers/observers:

@Test
public void test() {
    BehaviorSubject<Integer> subject = BehaviorSubject.create();

    Observable<Integer> observable = subject
            .replay(1)
            .refCount();

    observable.takeUntil(Observable.just(1)).test();

    subject.onNext(2);

    observable.take(1).test().assertResult(2);
}


@Test
public void test2() {
    BehaviorProcessor<Integer> processor = BehaviorProcessor.create();

    Flowable<Integer> flowable = processor
            .replay(1)
            .refCount();

    // This line causes the test to fail.
    flowable.takeUntil(Flowable.just(1)).test();

    processor.onNext(2);

    flowable.take(1).test().assertResult(2);
}

Activity

  1. added this to the 2.2 backlog milestone on Nov 8, 2018
  2. davidmoten commented on Nov 9, 2018

    @davidmoten
    Collaborator

    Thanks for letting us know. Was this discovery prompted by a report or a flash of realization?

  3. joshallenit commented on Nov 9, 2018

    @joshallenit

    @davidmoten This was a bug we found during development. Our actual use case was more complicated but this is what it simplified to.
    @akarnokd Thanks for the quick response!

  4. akarnokd commented on Nov 9, 2018

    @akarnokd
    MemberAuthor
  5. artem-zinnatullin commented on Nov 9, 2018

    @artem-zinnatullin
    Contributor

    +1 to @davidmoten 's comment, this is how open source projects should tackle bugs

    👍 @akarnokd

  6. akarnokd commented on Nov 9, 2018

    @akarnokd
    MemberAuthor

    Fix posted in #6297.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions