summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoao Eduardo Luis <joao.luis@inktank.com>2013-04-15 23:14:03 +0100
committerJoao Eduardo Luis <joao.luis@inktank.com>2013-04-18 00:01:24 +0100
commit548ff241b3509d7b764ab3402926ef73b53da2d0 (patch)
tree5239a78cbebe8beb47fcba615361d22600288079
parentb0aec79811575988d9f29b6e62603ec9da682a55 (diff)
downloadceph-548ff241b3509d7b764ab3402926ef73b53da2d0.tar.gz
ceph_mon_kvstore_fix: add in-mem class to perform dry runs
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
-rw-r--r--src/mon_kvstore_fix.cc36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/mon_kvstore_fix.cc b/src/mon_kvstore_fix.cc
index ff2b99e0463..3f6fb147cce 100644
--- a/src/mon_kvstore_fix.cc
+++ b/src/mon_kvstore_fix.cc
@@ -63,8 +63,8 @@ public:
mem_prefix(prefix)
{ }
- int get(const string &prefix, const string &key, bufferlist &bl) {
- generic_dout(0) << "MemMonitorDBStore::get("
+ virtual int get(const string &prefix, const string &key, bufferlist &bl) {
+ generic_dout(20) << "MemMonitorDBStore::get("
<< prefix << "," << key << ")" << dendl;
if (prefix == mem_prefix) {
if (mem_store.count(key)) {
@@ -75,9 +75,17 @@ public:
return MonitorDBStore::get(prefix, key, bl);
}
- int apply_transaction(MonitorDBStore::Transaction &t) {
- generic_dout(0) << "MemMonitorDBStore::apply_transaction()"
- << " " << t.ops.size() << " ops" << dendl;
+ virtual bool exists(const string &prefix, const string &key) {
+ if (prefix == mem_prefix) {
+ if (mem_store.count(key) > 0)
+ return true;
+ }
+ return MonitorDBStore::exists(prefix, key);
+ }
+
+ virtual int apply_transaction(MonitorDBStore::Transaction &t) {
+ generic_dout(20) << "MemMonitorDBStore::apply_transaction()"
+ << " " << t.ops.size() << " ops" << dendl;
list<Op> not_our_ops;
@@ -95,13 +103,22 @@ public:
if (not_our_ops.size() == 0)
return 0;
- generic_dout(0) << "MemMonitorDBStore::apply_transaction()"
- << " " << not_our_ops.size() << " ops delegated" << dendl;
+ generic_dout(20) << "MemMonitorDBStore::apply_transaction()"
+ << " " << not_our_ops.size() << " ops delegated" << dendl;
t.ops = not_our_ops;
return MonitorDBStore::apply_transaction(t);
}
};
+void print_progress(version_t first, version_t last, version_t curr)
+{
+ version_t delta = last - first;
+ version_t count = curr - first;
+
+ int percent = (int) ((count/delta)*100);
+ if (percent % 10)
+ generic_dout(0) << " " << percent << "\% progress" << dendl;
+}
int check_old_service_versions(MonitorStoreRef store,
map<string,ServiceVersions> &versions)
@@ -115,7 +132,9 @@ int check_old_service_versions(MonitorStoreRef store,
svc.first_committed = store->get_int(name.c_str(), "first_committed");
svc.last_committed = store->get_int(name.c_str(), "last_committed");
+ generic_dout(0) << " " << name << dendl;
for (version_t v = svc.first_committed; v <= svc.last_committed; ++v) {
+ print_progress(svc.first_committed, svc.last_committed, v);
if (!store->exists_bl_sn(name.c_str(), v)) {
derr << " service " << name << " ver " << v << " does not exist"
<< dendl;
@@ -140,7 +159,9 @@ int check_new_service_versions(MonitorDBStoreRef db,
svc.first_committed = db->get(name, "first_committed");
svc.last_committed = db->get(name, "last_committed");
+ generic_dout(0) << " " << name << dendl;
for (version_t v = svc.first_committed; v <= svc.last_committed; ++v) {
+ print_progress(svc.first_committed, svc.last_committed, v);
if (!db->exists(name.c_str(), v)) {
derr << " service " << name << " ver " << v << " does not exist"
<< dendl;
@@ -434,6 +455,7 @@ int main(int argc, const char *argv[])
MonitorDBStore *db_ptr;
if (dry) {
+ generic_dout(0) << "running dry" << dendl;
db_ptr = new MemMonitorDBStore(db_path, "osdmap");
} else {
db_ptr = new MonitorDBStore(db_path);