Description
I've recently implemented backpressure in RxJava's cache()
operator which unfortunately failed in Netfix' canary environment: threads got accumulated over time probably due to hangs in the downstream. I've also run Hystrix' unit test with 1.0.13RC and everything passed.
I've looked at the AbstractCommand
but it looks complicated and I don't really see what is subscribing to the cached Observable that could hang. The addition of backpressure causes the operator to not send any values unless requested; if there is a downstream operator that forgets to request, it will hang (previously, it just got the next value). The second change is that cache replays its buffer live instead of accumulating a synchronous source first, causing changes in timing of the value delivery.