{"action":"closed","issue":{"url":"https://api.github.com/repos/akka/akka/issues/17129","labels_url":"https://api.github.com/repos/akka/akka/issues/17129/labels{/name}","comments_url":"https://api.github.com/repos/akka/akka/issues/17129/comments","events_url":"https://api.github.com/repos/akka/akka/issues/17129/events","html_url":"https://github.com/akka/akka/issues/17129","id":65874991,"number":17129,"title":"http server blueprint is reused but cannot be","user":{"login":"jrudolph","id":9868,"avatar_url":"https://avatars.githubusercontent.com/u/9868?v=3","gravatar_id":"","url":"https://api.github.com/users/jrudolph","html_url":"https://github.com/jrudolph","followers_url":"https://api.github.com/users/jrudolph/followers","following_url":"https://api.github.com/users/jrudolph/following{/other_user}","gists_url":"https://api.github.com/users/jrudolph/gists{/gist_id}","starred_url":"https://api.github.com/users/jrudolph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrudolph/subscriptions","organizations_url":"https://api.github.com/users/jrudolph/orgs","repos_url":"https://api.github.com/users/jrudolph/repos","events_url":"https://api.github.com/users/jrudolph/events{/privacy}","received_events_url":"https://api.github.com/users/jrudolph/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/akka/akka/labels/bug","name":"bug","color":"e11d21"},{"url":"https://api.github.com/repos/akka/akka/labels/t:http","name":"t:http","color":"ededed"},{"url":"https://api.github.com/repos/akka/akka/labels/t:http:core","name":"t:http:core","color":"ededed"},{"url":"https://api.github.com/repos/akka/akka/labels/t:http:next","name":"t:http:next","color":"fef2c0"},{"url":"https://api.github.com/repos/akka/akka/labels/t:http:server","name":"t:http:server","color":"ededed"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-04-02T08:13:19Z","updated_at":"2015-04-24T09:44:32Z","closed_at":"2015-04-24T09:44:32Z","body":"The server blueprint currently isn't reusable but it actually is reused in `HttpExt.bind`. Because reusage isn't prevented currently this currently introduces hard to detect errors.\r\n\r\nThe short-term solution should be not to reuse the HTTP server blueprint.\r\n\r\nIn the long-term it should be attempted to make the server blueprint reusable. Currently this isn't possible because it needs to access the ActorRef of the token source for Expect 100 support but there's no way to access it currently (can hopefully be fixed when #16168 is implemented). So, the token source writes the ActorRef into a mutable volatile var that is shared over all connections (!). Currently, the cell is overwritten which each new materialization of the blueprint, i.e. Expect 100 support only works on the latest connection and can be disrupted by older connections also trying to use Expect 100 support.\r\n\r\nAlso, for similar reasons initial websocket support won't be reusable for now."}}