]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: Monitor: inject missing key failures during scrub
authorJoao Eduardo Luis <joao@suse.de>
Fri, 22 May 2015 17:49:03 +0000 (18:49 +0100)
committerJoao Eduardo Luis <joao@suse.de>
Wed, 27 May 2015 22:48:45 +0000 (23:48 +0100)
Signed-off-by: Joao Eduardo Luis <joao@suse.de>
src/common/config_opts.h
src/mon/Monitor.cc

index 828919f9161e7b7e379fcb8257247c2d25a7798d..5bec749c013e55efc8a7be14554e7498cb0c9323 100644 (file)
@@ -246,6 +246,7 @@ OPTION(mon_data_size_warn, OPT_U64, 15*1024*1024*1024) // issue a warning when t
 OPTION(mon_scrub_interval, OPT_INT, 3600*24) // once a day
 OPTION(mon_scrub_max_keys, OPT_INT, 100) // max number of keys to scrub each time
 OPTION(mon_scrub_inject_crc_mismatch, OPT_DOUBLE, 0.0) // probability of injected crc mismatch [0.0, 1.0]
+OPTION(mon_scrub_inject_missing_keys, OPT_DOUBLE, 0.0) // probability of injected missing keys [0.0, 1.0]
 OPTION(mon_config_key_max_entry_size, OPT_INT, 4096) // max num bytes per config-key entry
 OPTION(mon_sync_timeout, OPT_DOUBLE, 60.0)
 OPTION(mon_sync_max_payload_size, OPT_U32, 1048576) // max size for a sync chunk payload (say, 1MB)
index ddf87acbd07248c09e69e49f68987ede3d24de61..b21cd38f39afd0b27a823b2cbddc6f283088a405 100644 (file)
@@ -4329,6 +4329,13 @@ bool Monitor::_scrub(ScrubResult *r,
     if (prefixes.count(k.first) == 0)
       continue;
 
+    if (cct->_conf->mon_scrub_inject_missing_keys > 0.0 &&
+        (rand() % 10000 < cct->_conf->mon_scrub_inject_missing_keys*10000.0)) {
+      dout(10) << __func__ << " inject missing key, skipping (" << k << ")"
+               << dendl;
+      continue;
+    }
+
     bufferlist bl;
     store->get(k.first, k.second, bl);
     uint32_t key_crc = bl.crc32c(0);