Skip to content

Single.takeUntil does not dispose subscription to 'other' upon disposal #6018

@damianw

Description

@damianw

Using Single.takeUntil does not dispose the subscription it makes to other when the main subscription is disposed. RxJava Version: 2.1.13

Sample

val control = Single.never<Nothing>()
        .doOnSubscribe { println("Subscribe control") }
        .doOnDispose { println("Dispose control") }
val disposable = Single.never<Nothing>()
        .doOnSubscribe { println("Subscribe main") }
        .doOnDispose { println("Dispose main") }
        .takeUntil(control)
        .subscribe()
disposable.dispose()

prints only:

Subscribe control
Subscribe main
Dispose main

Comparison with Observable

For comparison, Observable.takeUntil:

val control = Observable.never<Nothing>()
        .doOnSubscribe { println("Subscribe control") }
        .doOnDispose { println("Dispose control") }
val disposable = Observable.never<Nothing>()
        .doOnSubscribe { println("Subscribe main") }
        .doOnDispose { println("Dispose main") }
        .takeUntil(control)
        .subscribe()
disposable.dispose()

prints:

Subscribe control
Subscribe main
Dispose main
Dispose control

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