From: Sage Weil Date: Thu, 11 Dec 2008 22:03:07 +0000 (-0800) Subject: mon: fix up MLog constructor X-Git-Tag: v0.6~89 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ab77f976889a6e0800f70ccccff0da326af2d7b8;p=ceph.git mon: fix up MLog constructor Initialize 'last'. More idiot proof. --- diff --git a/src/common/LogClient.cc b/src/common/LogClient.cc index d618ed3b69bc..50b9a3f244e9 100644 --- a/src/common/LogClient.cc +++ b/src/common/LogClient.cc @@ -68,8 +68,7 @@ void LogClient::send_log() Mutex::Locker l(log_lock); if (log_queue.empty()) return; - MLog *log = new MLog(monmap->get_fsid()); - log->entries = log_queue; + MLog *log = new MLog(monmap->get_fsid(), log_queue); int mon = monmap->pick_mon(); dout(10) << "send_log to mon" << mon << dendl; messenger->send_message(log, monmap->get_inst(mon)); @@ -80,7 +79,7 @@ void LogClient::handle_log(MLog *m) Mutex::Locker l(log_lock); dout(10) << "handle_log " << *m << dendl; - version_t last = m->entries.rbegin()->seq; + version_t last = m->last; while (log_queue.size() && log_queue.begin()->seq <= last) { dout(10) << " logged " << log_queue.front() << dendl; log_queue.pop_front(); diff --git a/src/messages/MLog.h b/src/messages/MLog.h index e56342a25012..acac22f3c15b 100644 --- a/src/messages/MLog.h +++ b/src/messages/MLog.h @@ -24,8 +24,10 @@ public: version_t last; MLog() : Message(MSG_PGSTATS) {} - MLog(ceph_fsid& f) : - Message(MSG_LOG), fsid(f) {} + MLog(ceph_fsid& f, deque& e) : + Message(MSG_LOG), fsid(f), entries(e), last(0) { } + MLog(ceph_fsid& f, version_t l) : + Message(MSG_LOG), fsid(f), last(l) {} const char *get_type_name() { return "log"; } void print(ostream& out) { diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index a7ec10305c31..75989ae3d808 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -228,10 +228,11 @@ bool LogMonitor::prepare_log(MLog *m) return true; } -void LogMonitor::_updated_log(MLog *ack, entity_inst_t who) +void LogMonitor::_updated_log(MLog *m, entity_inst_t who) { dout(7) << "_updated_log for " << who << dendl; - mon->messenger->send_message(ack, who); + mon->messenger->send_message(new MLog(m->fsid, m->entries.rbegin()->seq), who); + delete m; }