{"action":"closed","issue":{"url":"https://api.github.com/repos/paypal/cascade/issues/92","labels_url":"https://api.github.com/repos/paypal/cascade/issues/92/labels{/name}","comments_url":"https://api.github.com/repos/paypal/cascade/issues/92/comments","events_url":"https://api.github.com/repos/paypal/cascade/issues/92/events","html_url":"https://github.com/paypal/cascade/issues/92","id":58146552,"number":92,"title":"Request timeouts are easily disrespected by actor inheritance for HttpResourceActors","user":{"login":"2rs2ts","id":578891,"avatar_url":"https://avatars.githubusercontent.com/u/578891?v=3","gravatar_id":"","url":"https://api.github.com/users/2rs2ts","html_url":"https://github.com/2rs2ts","followers_url":"https://api.github.com/users/2rs2ts/followers","following_url":"https://api.github.com/users/2rs2ts/following{/other_user}","gists_url":"https://api.github.com/users/2rs2ts/gists{/gist_id}","starred_url":"https://api.github.com/users/2rs2ts/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/2rs2ts/subscriptions","organizations_url":"https://api.github.com/users/2rs2ts/orgs","repos_url":"https://api.github.com/users/2rs2ts/repos","events_url":"https://api.github.com/users/2rs2ts/events{/privacy}","received_events_url":"https://api.github.com/users/2rs2ts/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/paypal/cascade/labels/bug","name":"bug","color":"fc2929"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-02-18T23:33:25Z","updated_at":"2015-02-27T22:16:28Z","closed_at":"2015-02-27T22:16:28Z","body":"The request timeout laid out for the `HttpResourceActor` can be easily circumvented by any services that an `AbstractResourceActor` talks to sending errant or delayed messages.\r\n\r\nSay resource X talks to services A, B, and C via tells and it expects responses from all three in its `resourceReceive` method. A and B respond after 1 second but C responds after 4.5, which is greater than the `processRecvTimeout` in a `ResourceContext`, so the request *should* time out... but because it was only 3.5 seconds in between A/B's responses and C's, the actor does not get a `ReceiveTimeout` and the request times out after the 4 seconds, which is wrong.\r\n\r\nPerhaps instead of using this timeout, we should be [scheduling](http://doc.akka.io/docs/akka/snapshot/scala/scheduler.html) a timeout message.\r\n\r\nThanks to @milesoc for helping me discover this issue."}}