From: Sage Weil Date: Tue, 27 Nov 2012 23:58:09 +0000 (-0800) Subject: msg/Pipe: start delay thread *after* we know peer type X-Git-Tag: v0.56~113^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=158260b6ae3ca5dc72d62590228d435fd8f2b34e;p=ceph.git msg/Pipe: start delay thread *after* we know peer type At end of connect(), or end of accept(). Signed-off-by: Sage Weil --- diff --git a/src/msg/Pipe.cc b/src/msg/Pipe.cc index 404edb589c61..f6061564444f 100644 --- a/src/msg/Pipe.cc +++ b/src/msg/Pipe.cc @@ -127,15 +127,16 @@ void Pipe::start_reader() } reader_running = true; reader_thread.create(msgr->cct->_conf->ms_rwthread_stack_bytes); +} + +void Pipe::maybe_start_delay_thread() +{ if (!delay_thread && msgr->cct->_conf->ms_inject_delay_type.find(ceph_entity_type_name(connection_state->peer_type)) != string::npos) { lsubdout(msgr->cct, ms, 1) << "setting up a delay queue on Pipe " << this << dendl; delay_thread = new DelayedDelivery(this); delay_thread->create(); - } else - lsubdout(msgr->cct, ms, 1) << "Pipe " << this << " peer is " << ceph_entity_type_name(connection_state->peer_type) - << "; NOT injecting delays because it does not match " - << msgr->cct->_conf->ms_inject_delay_type << dendl; + } } void Pipe::start_writer() @@ -615,6 +616,9 @@ int Pipe::accept() } ldout(msgr->cct,20) << "accept done" << dendl; pipe_lock.Unlock(); + + maybe_start_delay_thread(); + return 0; // success. fail_unlocked: @@ -964,6 +968,7 @@ int Pipe::connect() ldout(msgr->cct,20) << "connect starting reader" << dendl; start_reader(); } + maybe_start_delay_thread(); delete authorizer; return 0; } diff --git a/src/msg/Pipe.h b/src/msg/Pipe.h index c489ec806106..4754a530585d 100644 --- a/src/msg/Pipe.h +++ b/src/msg/Pipe.h @@ -211,6 +211,7 @@ class DispatchQueue; void start_reader(); void start_writer(); + void maybe_start_delay_thread(); void join_reader(); // public constructors