{"action":"created","issue":{"url":"https://api.github.com/repos/celluloid/celluloid-io/issues/142","labels_url":"https://api.github.com/repos/celluloid/celluloid-io/issues/142/labels{/name}","comments_url":"https://api.github.com/repos/celluloid/celluloid-io/issues/142/comments","events_url":"https://api.github.com/repos/celluloid/celluloid-io/issues/142/events","html_url":"https://github.com/celluloid/celluloid-io/pull/142","id":69769594,"number":142,"title":"Handle MRI's Errno::EALREADY in connect_nonblock. Fixes #138","user":{"login":"ioquatix","id":30030,"avatar_url":"https://avatars.githubusercontent.com/u/30030?v=3","gravatar_id":"","url":"https://api.github.com/users/ioquatix","html_url":"https://github.com/ioquatix","followers_url":"https://api.github.com/users/ioquatix/followers","following_url":"https://api.github.com/users/ioquatix/following{/other_user}","gists_url":"https://api.github.com/users/ioquatix/gists{/gist_id}","starred_url":"https://api.github.com/users/ioquatix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ioquatix/subscriptions","organizations_url":"https://api.github.com/users/ioquatix/orgs","repos_url":"https://api.github.com/users/ioquatix/repos","events_url":"https://api.github.com/users/ioquatix/events{/privacy}","received_events_url":"https://api.github.com/users/ioquatix/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-04-21T07:39:52Z","updated_at":"2015-04-22T23:17:41Z","closed_at":"2015-04-22T15:13:16Z","pull_request":{"url":"https://api.github.com/repos/celluloid/celluloid-io/pulls/142","html_url":"https://github.com/celluloid/celluloid-io/pull/142","diff_url":"https://github.com/celluloid/celluloid-io/pull/142.diff","patch_url":"https://github.com/celluloid/celluloid-io/pull/142.patch"},"body":"In certain high-load situations in RubyDNS (thousands of connections), it\r\nhas been observed that `Socket#connect_nonblock` sometimes fails with\r\n`Errno::EALREADY`: a connection is already in progress for the specified\r\nsocket. In this case I believe it is prudent that we wait for the socket to\r\nbecome writable and then attempt to `connect_nonblock` again, at which\r\npoint the connection should either fail or give `Errno::EISCONN`."},"comment":{"url":"https://api.github.com/repos/celluloid/celluloid-io/issues/comments/95364848","html_url":"https://github.com/celluloid/celluloid-io/pull/142#issuecomment-95364848","issue_url":"https://api.github.com/repos/celluloid/celluloid-io/issues/142","id":95364848,"user":{"login":"ioquatix","id":30030,"avatar_url":"https://avatars.githubusercontent.com/u/30030?v=3","gravatar_id":"","url":"https://api.github.com/users/ioquatix","html_url":"https://github.com/ioquatix","followers_url":"https://api.github.com/users/ioquatix/followers","following_url":"https://api.github.com/users/ioquatix/following{/other_user}","gists_url":"https://api.github.com/users/ioquatix/gists{/gist_id}","starred_url":"https://api.github.com/users/ioquatix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ioquatix/subscriptions","organizations_url":"https://api.github.com/users/ioquatix/orgs","repos_url":"https://api.github.com/users/ioquatix/repos","events_url":"https://api.github.com/users/ioquatix/events{/privacy}","received_events_url":"https://api.github.com/users/ioquatix/received_events","type":"User","site_admin":false},"created_at":"2015-04-22T23:17:41Z","updated_at":"2015-04-22T23:17:41Z","body":"Okay thanks everyone for your time eyeballing this code, I look forward to removing the workaround in RubyDNS and testing once 0.17.0rc is ready."}}