{"action":"closed","issue":{"url":"https://api.github.com/repos/buybackoff/Ractor/issues/43","repository_url":"https://api.github.com/repos/buybackoff/Ractor","labels_url":"https://api.github.com/repos/buybackoff/Ractor/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/buybackoff/Ractor/issues/43/comments","events_url":"https://api.github.com/repos/buybackoff/Ractor/issues/43/events","html_url":"https://github.com/buybackoff/Ractor/issues/43","id":196607762,"number":43,"title":"WhenAll/BatchActor","user":{"login":"buybackoff","id":489852,"avatar_url":"https://avatars.githubusercontent.com/u/489852?v=3","gravatar_id":"","url":"https://api.github.com/users/buybackoff","html_url":"https://github.com/buybackoff","followers_url":"https://api.github.com/users/buybackoff/followers","following_url":"https://api.github.com/users/buybackoff/following{/other_user}","gists_url":"https://api.github.com/users/buybackoff/gists{/gist_id}","starred_url":"https://api.github.com/users/buybackoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/buybackoff/subscriptions","organizations_url":"https://api.github.com/users/buybackoff/orgs","repos_url":"https://api.github.com/users/buybackoff/repos","events_url":"https://api.github.com/users/buybackoff/events{/privacy}","received_events_url":"https://api.github.com/users/buybackoff/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-12-20T07:53:13Z","updated_at":"2016-12-23T15:58:57Z","closed_at":"2016-12-23T15:58:57Z","body":"Need `WhenAll` similar to TPL's `Task` but with the Ractor guarantees, with a signature like that: `WhenAll(ActorName, Requests[]) : Task<Replies[]>`. Implementation is just an Actor that accepts an array of requests, spawns subactors and awaits with TPL's WhenAll. But in case of its death we should check existing results of subactors, or just re-await by ids using existing logic so that stale jobs of dead subactors will be picked up and reposted by live ones.\r\n\r\nObvious use-case is a grid search for a maximum of a very expensive function, such as some crazy strategy on small timeframes. But the performance and costs benefits of horizontal partitioning must be significantly above the costs of data copying to workers.\r\n\r\nAlternatively, `WhenAll` could be a separate class that inherits `Actor` and accepts a subactor as a type parameters. Then Ractor's `ContinueWith` will work with it. Could call it `BatchActor`."}}
{"actor":{"display_login":"buybackoff"}}