From 7885879093eac9078f92d0c082407b2e623d9bc7 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 20 May 2008 10:57:19 -0700 Subject: [PATCH] msgr: kill off replaced connection threads --- src/common/Thread.h | 5 ++++- src/msg/SimpleMessenger.cc | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/common/Thread.h b/src/common/Thread.h index d15a783b7c6f6..b8b75bb57eec3 100644 --- a/src/common/Thread.h +++ b/src/common/Thread.h @@ -48,7 +48,10 @@ class Thread { static int get_num_threads() { return _num_threads; } int kill(int signal) { - return pthread_kill(thread_id, signal); + if (thread_id) + return pthread_kill(thread_id, signal); + else + return -EINVAL; } int create() { _num_threads++; diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 8a50cf26cfe45..632e8f77c7a23 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -872,8 +872,9 @@ int Rank::Pipe::accept() dout(10) << "accept replacing " << existing << dendl; existing->state = STATE_CLOSED; existing->cond.Signal(); + existing->reader_thread.kill(SIGUSR1); existing->unregister_pipe(); - + // steal queue and out_seq out_seq = existing->out_seq; if (!existing->sent.empty()) { @@ -1197,7 +1198,7 @@ void Rank::Pipe::fail() void Rank::Pipe::was_session_reset() { - dout(10) << "was_reset_session" << dendl; + dout(10) << "was_session_reset" << dendl; report_failures(); for (unsigned i=0; iget_dispatcher()) -- 2.39.5