Causes the remove_wq thread to sleep the specified number
of seconds between transactions.
Fixes: http://tracker.ceph.com/issues/36321
Signed-off-by: David Zafman <dzafman@redhat.com>
This backport is not cherry-picked from master since the remove
threadpool was folded into the main op queue post-luminous, so the
code is almost entirely different.
OPTION(osd_op_history_slow_op_size, OPT_U32) // Max number of slow ops to track
OPTION(osd_op_history_slow_op_threshold, OPT_DOUBLE) // track the op if over this threshold
OPTION(osd_target_transaction_size, OPT_INT) // to adjust various transactions that batch smaller items
+OPTION(osd_delete_sleep, OPT_FLOAT) // seconds to sleep between removal transactions
OPTION(osd_failsafe_full_ratio, OPT_FLOAT) // what % full makes an OSD "full" (failsafe)
OPTION(osd_fast_fail_on_connection_refused, OPT_BOOL) // immediately mark OSDs as down once they refuse to accept connections
.set_default(30)
.set_description(""),
+ Option("osd_delete_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+ .set_default(0)
+ .set_description("Time in seconds to sleep before next removal transaction"),
+
Option("osd_failsafe_full_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(.97)
.set_description(""),
cont = dstate->pause_clearing();
handle.suspend_tp_timeout();
waiter.wait();
+ if (cct->_conf->osd_delete_sleep) {
+ utime_t t;
+ t.set_from_double(cct->_conf->osd_delete_sleep);
+ lgeneric_subdout(cct, osd, 10) << __func__ << " inject delay of " << t << dendl;
+ t.sleep();
+ }
handle.reset_tp_timeout();
if (cont)
cont = dstate->resume_clearing();