diff options
author | Sage Weil <sage@inktank.com> | 2013-07-19 09:59:25 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-07-19 09:59:25 -0700 |
commit | d3e53cd66b0fc477f71cbd2c25113c4c9e404bc5 (patch) | |
tree | 7b70520479dd0fe453a0a0341296c76d3d55b0d2 | |
parent | 053659d05e0349053ef703b414f44965f368b9f0 (diff) | |
download | ceph-d3e53cd66b0fc477f71cbd2c25113c4c9e404bc5.tar.gz |
mon/MonClient: better debugging on version requests
From leak hunting, but useful.
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/mon/MonClient.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 8139b0259bf..299379ac249 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -318,9 +318,12 @@ int MonClient::init() void MonClient::shutdown() { + ldout(cct, 10) << __func__ << "shutdown" << dendl; monc_lock.Lock(); while (!version_requests.empty()) { version_requests.begin()->second->context->complete(-ECANCELED); + ldout(cct, 20) << __func__ << " canceling and discarding version request " + << version_requests.begin()->second << dendl; delete version_requests.begin()->second; version_requests.erase(version_requests.begin()); } @@ -872,12 +875,13 @@ int MonClient::start_mon_command(int rank, void MonClient::get_version(string map, version_t *newest, version_t *oldest, Context *onfinish) { - ldout(cct, 10) << "get_version " << map << dendl; + version_req_d *req = new version_req_d(onfinish, newest, oldest); + ldout(cct, 10) << "get_version " << map << " req " << req << dendl; Mutex::Locker l(monc_lock); MMonGetVersion *m = new MMonGetVersion(); m->what = map; m->handle = ++version_req_id; - version_requests[m->handle] = new version_req_d(onfinish, newest, oldest); + version_requests[m->handle] = req; _send_mon_message(m); } @@ -886,10 +890,11 @@ void MonClient::handle_get_version_reply(MMonGetVersionReply* m) assert(monc_lock.is_locked()); map<tid_t, version_req_d*>::iterator iter = version_requests.find(m->handle); if (iter == version_requests.end()) { - ldout(cct, 0) << "version request with handle " << m->handle + ldout(cct, 0) << __func__ << " version request with handle " << m->handle << " not found" << dendl; } else { version_req_d *req = iter->second; + ldout(cct, 10) << __func__ << " finishing " << req << " version " << m->version << dendl; version_requests.erase(iter); if (req->newest) *req->newest = m->version; |