{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/1053","labels_url":"https://api.github.com/repos/grpc/grpc-java/issues/1053/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc-java/issues/1053/comments","events_url":"https://api.github.com/repos/grpc/grpc-java/issues/1053/events","html_url":"https://github.com/grpc/grpc-java/issues/1053","id":107268739,"number":1053,"title":"netty: IOException should map to UNAVAILABLE","user":{"login":"ejona86","id":2811396,"avatar_url":"https://avatars.githubusercontent.com/u/2811396?v=3","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/grpc/grpc-java/labels/netty","name":"netty","color":"bfd4f2"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/grpc/grpc-java/milestones/5","html_url":"https://github.com/grpc/grpc-java/milestones/0.10.0","labels_url":"https://api.github.com/repos/grpc/grpc-java/milestones/5/labels","id":1308916,"number":5,"title":"0.10.0","description":"","creator":{"login":"ejona86","id":2811396,"avatar_url":"https://avatars.githubusercontent.com/u/2811396?v=3","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"open_issues":12,"closed_issues":1,"state":"open","created_at":"2015-09-16T17:20:22Z","updated_at":"2015-09-18T20:06:50Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2015-09-18T20:06:50Z","updated_at":"2015-09-18T20:12:51Z","closed_at":null,"body":"NIO can throw `java.io.IOException: Connection reset by peer`. In general, it seems that `IOException` would be `UNAVALIABLE`, although there are certainly outliers given the heavy overloading/abuse of `IOException` in Java."},"comment":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/comments/141554825","html_url":"https://github.com/grpc/grpc-java/issues/1053#issuecomment-141554825","issue_url":"https://api.github.com/repos/grpc/grpc-java/issues/1053","id":141554825,"user":{"login":"carl-mastrangelo","id":8943572,"avatar_url":"https://avatars.githubusercontent.com/u/8943572?v=3","gravatar_id":"","url":"https://api.github.com/users/carl-mastrangelo","html_url":"https://github.com/carl-mastrangelo","followers_url":"https://api.github.com/users/carl-mastrangelo/followers","following_url":"https://api.github.com/users/carl-mastrangelo/following{/other_user}","gists_url":"https://api.github.com/users/carl-mastrangelo/gists{/gist_id}","starred_url":"https://api.github.com/users/carl-mastrangelo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carl-mastrangelo/subscriptions","organizations_url":"https://api.github.com/users/carl-mastrangelo/orgs","repos_url":"https://api.github.com/users/carl-mastrangelo/repos","events_url":"https://api.github.com/users/carl-mastrangelo/events{/privacy}","received_events_url":"https://api.github.com/users/carl-mastrangelo/received_events","type":"User","site_admin":false},"created_at":"2015-09-18T20:12:51Z","updated_at":"2015-09-18T20:12:51Z","body":"Seems like generalizing IOException to always mean UNAVAILABLE would be risky, since UNAVAILABLE implies the rpc can be retried idempotently.  Perhaps selective callsites can do this mapping?"}}