{"action":"closed","issue":{"url":"https://api.github.com/repos/Netflix/Hystrix/issues/833","labels_url":"https://api.github.com/repos/Netflix/Hystrix/issues/833/labels{/name}","comments_url":"https://api.github.com/repos/Netflix/Hystrix/issues/833/comments","events_url":"https://api.github.com/repos/Netflix/Hystrix/issues/833/events","html_url":"https://github.com/Netflix/Hystrix/issues/833","id":95807100,"number":833,"title":"Backpressure sensitivity of cache() in Hystrix","user":{"login":"akarnokd","id":1269832,"avatar_url":"https://avatars.githubusercontent.com/u/1269832?v=3","gravatar_id":"","url":"https://api.github.com/users/akarnokd","html_url":"https://github.com/akarnokd","followers_url":"https://api.github.com/users/akarnokd/followers","following_url":"https://api.github.com/users/akarnokd/following{/other_user}","gists_url":"https://api.github.com/users/akarnokd/gists{/gist_id}","starred_url":"https://api.github.com/users/akarnokd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akarnokd/subscriptions","organizations_url":"https://api.github.com/users/akarnokd/orgs","repos_url":"https://api.github.com/users/akarnokd/repos","events_url":"https://api.github.com/users/akarnokd/events{/privacy}","received_events_url":"https://api.github.com/users/akarnokd/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Netflix/Hystrix/labels/hystrix-core","name":"hystrix-core","color":"009800"},{"url":"https://api.github.com/repos/Netflix/Hystrix/labels/question","name":"question","color":"cc317c"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-07-18T09:21:50Z","updated_at":"2015-11-03T05:57:22Z","closed_at":"2015-11-03T05:57:22Z","body":"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.\r\n\r\nI'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."}}