From 9b9edb04581cca15e67c567332529f5b3f426743 Mon Sep 17 00:00:00 2001 From: Joao Eduardo Luis Date: Sun, 15 Sep 2013 21:00:55 +0100 Subject: [PATCH] mon: OSDMonitor: smaller transactions when rebuilding full versions Otherwise, for considerably sized rebuilds, the monitor will not only consume vast amounts of memory, but it will also have troubles committing the transaction. Anyway, it's also a good idea to adjust transactions to the granularity we want, and to be fair we care that each rebuilt full map gets to disk, even if subsequent full maps don't (those can be rebuilt later). Fixes: #6323 Signed-off-by: Joao Eduardo Luis (cherry picked from commit 4ac1570c5cdcd6556dc291cc6d7878fd92d343ae) --- src/mon/OSDMonitor.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index c3358f2162784..930d9b285200d 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -179,13 +179,13 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap) } // walk through incrementals - MonitorDBStore::Transaction t; while (version > osdmap.epoch) { + MonitorDBStore::Transaction t; bufferlist inc_bl; int err = get_version(osdmap.epoch+1, inc_bl); assert(err == 0); assert(inc_bl.length()); - + dout(7) << "update_from_paxos applying incremental " << osdmap.epoch+1 << dendl; OSDMap::Incremental inc(inc_bl); err = osdmap.apply_incremental(inc); @@ -202,9 +202,9 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap) if (osdmap.epoch == 1) { t.erase("mkfs", "osdmap"); } + if (!t.empty()) + mon->store->apply_transaction(t); } - if (!t.empty()) - mon->store->apply_transaction(t); for (int o = 0; o < osdmap.get_max_osd(); o++) { if (osdmap.is_down(o)) { -- 2.39.5