From: Haomai Wang Date: Sat, 27 May 2017 02:44:34 +0000 (+0800) Subject: msg/async: keep _has_next_outgoing calling under write_lock X-Git-Tag: v12.1.0~57^2~8^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F15324%2Fhead;p=ceph.git msg/async: keep _has_next_outgoing calling under write_lock Signed-off-by: Haomai Wang --- diff --git a/src/msg/async/AsyncConnection.cc b/src/msg/async/AsyncConnection.cc index 7cc6fe97154..1f6ffcea88a 100644 --- a/src/msg/async/AsyncConnection.cc +++ b/src/msg/async/AsyncConnection.cc @@ -2433,6 +2433,7 @@ void AsyncConnection::handle_write() } auto start = ceph::mono_clock::now(); + bool more; do { bufferlist data; Message *m = _get_next_outgoing(&data); @@ -2444,13 +2445,14 @@ void AsyncConnection::handle_write() sent.push_back(m); m->get(); } + more = _has_next_outgoing(); write_lock.unlock(); // send_message or requeue messages may not encode message if (!data.length()) prepare_send_message(get_features(), m, data); - r = write_message(m, data, _has_next_outgoing()); + r = write_message(m, data, more); if (r < 0) { ldout(async_msgr->cct, 1) << __func__ << " send msg failed" << dendl; goto fail;