{"action":"created","issue":{"url":"https://api.github.com/repos/golang/go/issues/10117","labels_url":"https://api.github.com/repos/golang/go/issues/10117/labels{/name}","comments_url":"https://api.github.com/repos/golang/go/issues/10117/comments","events_url":"https://api.github.com/repos/golang/go/issues/10117/events","html_url":"https://github.com/golang/go/issues/10117","id":60278957,"number":10117,"title":"net: when LookupIP is timed out, all duplicate lookups wait","user":{"login":"fraenkel","id":929377,"avatar_url":"https://avatars.githubusercontent.com/u/929377?v=3","gravatar_id":"","url":"https://api.github.com/users/fraenkel","html_url":"https://github.com/fraenkel","followers_url":"https://api.github.com/users/fraenkel/followers","following_url":"https://api.github.com/users/fraenkel/following{/other_user}","gists_url":"https://api.github.com/users/fraenkel/gists{/gist_id}","starred_url":"https://api.github.com/users/fraenkel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fraenkel/subscriptions","organizations_url":"https://api.github.com/users/fraenkel/orgs","repos_url":"https://api.github.com/users/fraenkel/repos","events_url":"https://api.github.com/users/fraenkel/events{/privacy}","received_events_url":"https://api.github.com/users/fraenkel/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-03-08T22:07:52Z","updated_at":"2015-03-09T01:38:32Z","closed_at":null,"body":"It seems that if you have many goroutines that do lookups, they are tied to one routine that does the actual DNS resolve. If it succeeds, the answer is provided to everyone and all is happy.\r\n\r\nWhen it times out, rather than releasing everyone, all the goroutines must also wait their time out too. It would make more sense to also release the other routines with the errTimeout immediately."},"comment":{"url":"https://api.github.com/repos/golang/go/issues/comments/77788378","html_url":"https://github.com/golang/go/issues/10117#issuecomment-77788378","issue_url":"https://api.github.com/repos/golang/go/issues/10117","id":77788378,"user":{"login":"fraenkel","id":929377,"avatar_url":"https://avatars.githubusercontent.com/u/929377?v=3","gravatar_id":"","url":"https://api.github.com/users/fraenkel","html_url":"https://github.com/fraenkel","followers_url":"https://api.github.com/users/fraenkel/followers","following_url":"https://api.github.com/users/fraenkel/following{/other_user}","gists_url":"https://api.github.com/users/fraenkel/gists{/gist_id}","starred_url":"https://api.github.com/users/fraenkel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fraenkel/subscriptions","organizations_url":"https://api.github.com/users/fraenkel/orgs","repos_url":"https://api.github.com/users/fraenkel/repos","events_url":"https://api.github.com/users/fraenkel/events{/privacy}","received_events_url":"https://api.github.com/users/fraenkel/received_events","type":"User","site_admin":false},"created_at":"2015-03-09T01:38:32Z","updated_at":"2015-03-09T01:38:32Z","body":"This is Go 1.3.  You are correct that it looks like with the Forget in there, this problem should go away.\r\n\r\nBut the c.dups on https://github.com/golang/go/blob/77595e462be07b8229f88cbdf947e320bfc7e639/src/net/singleflight.go#L62 seems racy.  Are we relying on all the locking done doCall to make it have a current value?"}}