From: Haomai Wang Date: Fri, 17 Jun 2016 13:55:03 +0000 (+0800) Subject: msg/async: Consolidate accept error handle X-Git-Tag: ses5-milestone5~575^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f97d0d2ccb9347a6252909975e5a81668f3bd406;p=ceph.git msg/async: Consolidate accept error handle The original logic is from https://github.com/ceph/ceph/commit/ba140b5a6d1bafe7f953819f682758ab552edfd4 I think it doesn't make sense in detail errno case. Signed-off-by: Haomai Wang --- diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index 52e71e0e18e4..c2c9d7081779 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -277,13 +277,11 @@ int Processor::start(Worker *w) void Processor::accept() { ldout(msgr->cct, 10) << __func__ << " listen_sd=" << listen_sd << dendl; - int errors = 0; - while (errors < 4) { + while (true) { sockaddr_storage ss; socklen_t slen = sizeof(ss); int sd = ::accept(listen_sd, (sockaddr*)&ss, &slen); if (sd >= 0) { - errors = 0; ldout(msgr->cct, 10) << __func__ << " accepted incoming on sd " << sd << dendl; msgr->add_accept(sd); @@ -293,10 +291,18 @@ void Processor::accept() continue; } else if (errno == EAGAIN) { break; + } else if (errno == EMFILE || errno == ENFILE) { + lderr(msgr->cct) << __func__ << " open file descriptions limit reached sd = " << sd + << " errno " << errno << " " << cpp_strerror(errno) << dendl; + break; + } else if (errno == ECONNABORTED) { + ldout(msgr->cct, 0) << __func__ << " it was closed because of rst arrived sd = " << sd + << " errno " << errno << " " << cpp_strerror(errno) << dendl; + continue; } else { - errors++; - ldout(msgr->cct, 20) << __func__ << " no incoming connection? sd = " << sd - << " errno " << errno << " " << cpp_strerror(errno) << dendl; + lderr(msgr->cct) << __func__ << " no incoming connection? sd = " << sd + << " errno " << errno << " " << cpp_strerror(errno) << dendl; + break; } } }