ceph_mon: cleanup on shutdown

Properly cleanup the throttlers, 'g_ceph_context' and the
async_singnal_handler.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon: remove all sessions on shutdown

Signed-off-by: Sage Weil <sage@inktank.com>
mon: Monitor: drop election messages if entity doesn't have enough caps

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon: Monitor: finish contexts on shutdown

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon: Paxos{,Service}: finish contexts and put messages on shutdown

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon: Monitor: make MSG_MON_PAXOS case a bit more consistent

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
msg/Pipe: don't leak session_security

Make sure we free old instances of sesseion_security before we reset the
pointer.

Signed-off-by: Sage Weil <sage@inktank.com>
mon: sessions get cleaned up before dtor

Signed-off-by: Sage Weil <sage@inktank.com>
mon: drop con->session reference in remove_session()

This captures all callers.

Signed-off-by: Sage Weil <sage@inktank.com>
mon: clean up Subsription xlists

Signed-off-by: Sage Weil <sage@inktank.com>
msg/SimpleMessenger: use put() on local_connection

This aids leak debugging; not much else.

Signed-off-by: Sage Weil <sage@inktank.com>
msg/DispatchQueue: fix message leak from discard_queue()

We need to drop the Message ref() here; the msgr owns one ref
independent of those from the intrusive_ptr's in the queue itself.

Signed-off-by: Sage Weil <sage@inktank.com>
msg/Pipe: join previous reader threads

We may stop and then restart the reader thread.  Join previous threads
before we create new ones.

Signed-off-by: Sage Weil <sage@inktank.com>
msg/Pipe: remove useless reader_joining

We set it but do not read it.

Signed-off-by: Sage Weil <sage@inktank.com>
mon/AuthMonitor: reorder session->put()

Signed-off-by: Sage Weil <sage@inktank.com>
mon/AuthMonitor: refactor assign_global_id

Move the failure logic into the caller, where we easier to do something
about it and return the right value to the caller.

Signed-off-by: Sage Weil <sage@inktank.com>
mon: shutdown async signal handler sooner

Before the mon, and lockdep, in particular.

#0  __pthread_mutex_lock (mutex=0x30) at pthread_mutex_lock.c:50
#1  0x0000000000816092 in ceph::log::Log::submit_entry (this=0x0, e=0x2f4a270) at log/Log.cc:138
#2  0x00000000007ee0f8 in handle_fatal_signal (signum=11) at global/signal_handler.cc:100
#3  <signal handler called>
#4  0x00000000008e1300 in lockdep_will_lock (name=0x959aa7 "SignalHandler::lock", id=17) at common/lockdep.cc:163
#5  0x00000000008867fc in Mutex::_will_lock (this=0x2f20428) at ./common/Mutex.h:56
#6  0x0000000000886605 in Mutex::Lock (this=0x2f20428, no_lockdep=false) at common/Mutex.cc:81
#7  0x00000000007eeb95 in SignalHandler::entry (this=0x2f20300) at global/signal_handler.cc:198
#8  0x00000000008b0bd1 in Thread::_entry_func (arg=0x2f20300) at common/Thread.cc:43
#9  0x00007f36fefd6b50 in start_thread (arg=<optimized out>) at pthread_create.c:304
#10 0x00007f36fd80b6dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

#0  0x00007f36fefd7e75 in pthread_join (threadid=139874129766144, thread_return=0x0) at pthread_join.c:89
#1  0x00000000008b11ec in Thread::join (this=0x2f20300, prval=0x0) at common/Thread.cc:130
#2  0x00000000007eeae7 in SignalHandler::shutdown (this=0x2f20300) at global/signal_handler.cc:186
#3  0x00000000007ee9cf in SignalHandler::~SignalHandler (this=0x2f20300, __in_chrg=<optimized out>) at global/signal_handler.cc:175
#4  0x00000000007eea58 in SignalHandler::~SignalHandler (this=0x2f20300, __in_chrg=<optimized out>) at global/signal_handler.cc:176
#5  0x00000000007ee643 in shutdown_async_signal_handler () at global/signal_handler.cc:324
#6  0x00000000006de9d2 in main (argc=7, argv=0x7fffbfb8a1e8) at ceph_mon.cc:439

Signed-off-by: Sage Weil <sage@inktank.com>
Merge branch 'wip-mon-leaks-fix' into next