{"action":"created","issue":{"url":"https://api.github.com/repos/akka/akka/issues/24676","repository_url":"https://api.github.com/repos/akka/akka","labels_url":"https://api.github.com/repos/akka/akka/issues/24676/labels{/name}","comments_url":"https://api.github.com/repos/akka/akka/issues/24676/comments","events_url":"https://api.github.com/repos/akka/akka/issues/24676/events","html_url":"https://github.com/akka/akka/issues/24676","id":303112537,"number":24676,"title":"Async boundaries in sub streams not working as expected","user":{"login":"johanandren","id":666915,"avatar_url":"https://avatars3.githubusercontent.com/u/666915?v=4","gravatar_id":"","url":"https://api.github.com/users/johanandren","html_url":"https://github.com/johanandren","followers_url":"https://api.github.com/users/johanandren/followers","following_url":"https://api.github.com/users/johanandren/following{/other_user}","gists_url":"https://api.github.com/users/johanandren/gists{/gist_id}","starred_url":"https://api.github.com/users/johanandren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johanandren/subscriptions","organizations_url":"https://api.github.com/users/johanandren/orgs","repos_url":"https://api.github.com/users/johanandren/repos","events_url":"https://api.github.com/users/johanandren/events{/privacy}","received_events_url":"https://api.github.com/users/johanandren/received_events","type":"User","site_admin":false},"labels":[{"id":92356828,"url":"https://api.github.com/repos/akka/akka/labels/1%20-%20triaged","name":"1 - triaged","color":"5319e7","default":false},{"id":92619677,"url":"https://api.github.com/repos/akka/akka/labels/bug","name":"bug","color":"e11d21","default":true},{"id":93144690,"url":"https://api.github.com/repos/akka/akka/labels/t:stream","name":"t:stream","color":"cccccc","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-03-07T14:09:24Z","updated_at":"2018-03-07T15:21:21Z","closed_at":null,"author_association":"MEMBER","body":"The following stream:\r\n\r\n```\r\nSource.queue[Elem](3, OverflowStrategy.backpressure)\r\n  .groupBy(2, _.substream)\r\n  .to(\r\n    Flow[Elem]\r\n      .buffer(2, OverflowStrategy.backpressure)\r\n      .map { _.f() }\r\n      .to(Sink.ignore)\r\n      .async\r\n  )\r\n```\r\n\r\nI would expect to materialize into one island for `SourceQueue->GroupBy`, and then one island per materialised downstream with `BatchingActorInputBoundary->Buffer->Map->IgnoreSink`. \r\n\r\nIn reality it materializes into one island with `QueueSource->GroupBy,BatchingActorInputBoundary->Buffer->Map` and then one with `SubSource->ActorOutputBoundary`."},"comment":{"url":"https://api.github.com/repos/akka/akka/issues/comments/371172786","html_url":"https://github.com/akka/akka/issues/24676#issuecomment-371172786","issue_url":"https://api.github.com/repos/akka/akka/issues/24676","id":371172786,"user":{"login":"johanandren","id":666915,"avatar_url":"https://avatars3.githubusercontent.com/u/666915?v=4","gravatar_id":"","url":"https://api.github.com/users/johanandren","html_url":"https://github.com/johanandren","followers_url":"https://api.github.com/users/johanandren/followers","following_url":"https://api.github.com/users/johanandren/following{/other_user}","gists_url":"https://api.github.com/users/johanandren/gists{/gist_id}","starred_url":"https://api.github.com/users/johanandren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johanandren/subscriptions","organizations_url":"https://api.github.com/users/johanandren/orgs","repos_url":"https://api.github.com/users/johanandren/repos","events_url":"https://api.github.com/users/johanandren/events{/privacy}","received_events_url":"https://api.github.com/users/johanandren/received_events","type":"User","site_admin":false},"created_at":"2018-03-07T15:21:21Z","updated_at":"2018-03-07T15:21:21Z","author_association":"MEMBER","body":"When calling `async` (or `with/addAttributes`) directly on a sub flow, this replaces the sub flow built up that far, with one wrapped in the attributes. So, `source.groupBy.map.async.to(Sink.ignore)` will potentially make an async island out of `map`, however `to` terminates the sub flow so `source.groupBy.map.to(Sink.ignore).async` does not apply `async` to the subflow (this was not obvious to me, at first at least)."}}
{"actor":{"display_login":"johanandren"}}