From 80ce9b0dbd576fb87138e288e38cf2ded4276d9f Mon Sep 17 00:00:00 2001 From: Joao Eduardo Luis Date: Fri, 22 May 2015 18:49:03 +0100 Subject: [PATCH] mon: Monitor: inject missing key failures during scrub Signed-off-by: Joao Eduardo Luis --- src/common/config_opts.h | 1 + src/mon/Monitor.cc | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 828919f9161e..5bec749c013e 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -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) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index ddf87acbd072..b21cd38f39af 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -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); -- 2.47.3