{"action":"created","issue":{"url":"https://api.github.com/repos/netty/netty/issues/3976","labels_url":"https://api.github.com/repos/netty/netty/issues/3976/labels{/name}","comments_url":"https://api.github.com/repos/netty/netty/issues/3976/comments","events_url":"https://api.github.com/repos/netty/netty/issues/3976/events","html_url":"https://github.com/netty/netty/issues/3976","id":94537036,"number":3976,"title":"DNS status codes not visible to the query future's listener","user":{"login":"dmk23","id":1828444,"avatar_url":"https://avatars.githubusercontent.com/u/1828444?v=3","gravatar_id":"","url":"https://api.github.com/users/dmk23","html_url":"https://github.com/dmk23","followers_url":"https://api.github.com/users/dmk23/followers","following_url":"https://api.github.com/users/dmk23/following{/other_user}","gists_url":"https://api.github.com/users/dmk23/gists{/gist_id}","starred_url":"https://api.github.com/users/dmk23/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmk23/subscriptions","organizations_url":"https://api.github.com/users/dmk23/orgs","repos_url":"https://api.github.com/users/dmk23/repos","events_url":"https://api.github.com/users/dmk23/events{/privacy}","received_events_url":"https://api.github.com/users/dmk23/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/netty/netty/milestones/117","html_url":"https://github.com/netty/netty/milestones/4.1.0.Beta6","labels_url":"https://api.github.com/repos/netty/netty/milestones/117/labels","id":1100817,"number":117,"title":"4.1.0.Beta6","description":"","creator":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"open_issues":70,"closed_issues":42,"state":"open","created_at":"2015-05-07T19:29:09Z","updated_at":"2015-07-12T08:29:49Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2015-07-12T05:42:56Z","updated_at":"2015-07-12T08:30:38Z","closed_at":null,"body":"I decided to gather a clearer picture of what is causing failed DNS resolutions by calculating the counts of each DnsResponseCode in the query listener.\r\n\r\nTo my surprise I found that the only status code visible in the listener (after ```future.sync().getNow()```) is NOERROR. Everything else causes an exception (usually UnknownHostException or \"query ID space exhausted\") without returning an actual DNS response to look at.\r\n\r\nThis behavior seems wrong since it mixes up all the codes to the user. For example if we get NXDOMAIN we'd treat it as a valid record of domain's non-existence, but in case of a SERVFAIL, NOTIMP or REFUSED we'd know to retry the query to a different resolver (or do whatever else).\r\n\r\nThe behavior should be amended to always give user a chance to see the actual response..."},"comment":{"url":"https://api.github.com/repos/netty/netty/issues/comments/120701134","html_url":"https://github.com/netty/netty/issues/3976#issuecomment-120701134","issue_url":"https://api.github.com/repos/netty/netty/issues/3976","id":120701134,"user":{"login":"trustin","id":173918,"avatar_url":"https://avatars.githubusercontent.com/u/173918?v=3","gravatar_id":"","url":"https://api.github.com/users/trustin","html_url":"https://github.com/trustin","followers_url":"https://api.github.com/users/trustin/followers","following_url":"https://api.github.com/users/trustin/following{/other_user}","gists_url":"https://api.github.com/users/trustin/gists{/gist_id}","starred_url":"https://api.github.com/users/trustin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trustin/subscriptions","organizations_url":"https://api.github.com/users/trustin/orgs","repos_url":"https://api.github.com/users/trustin/repos","events_url":"https://api.github.com/users/trustin/events{/privacy}","received_events_url":"https://api.github.com/users/trustin/received_events","type":"User","site_admin":false},"created_at":"2015-07-12T08:30:38Z","updated_at":"2015-07-12T08:30:38Z","body":"I'm also going to add a dedicated exception for DNS queries so that we can retrieve the necessary information more easily."}}