As some Teuthology tests seem to block objects for long minutes,
we must not issue the "scrub is blocked for too long" warning
(that warning causes the tests to fail).
A new configuration parameter now controls the grace period before
the warning is issued. Some tests were modified to set this
configuration parameter to a large value.
Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
osd:
osd class load list: "*"
osd class default list: "*"
+ osd blocked scrub grace period: 3600
tasks:
- workunit:
clients:
conf:
osd:
osd max markdown count: 1000
+ osd blocked scrub grace period: 3600
log-ignorelist:
- overall HEALTH_
- \(OSDMAP_FLAGS\)
see_also:
- osd_deep_scrub_large_omap_object_key_threshold
with_legacy: true
+# when scrubbing blocks on a locked object
+- name: osd_blocked_scrub_grace_period
+ type: int
+ level: advanced
+ desc: Time (seconds) before issuing a cluster-log warning
+ long_desc: Waiting too long for an object in the scrubbed chunk to be unlocked.
+ default: 120
+ with_legacy: true
# where rados plugins are stored
- name: osd_class_dir
type: str
Scrub::BlockedRangeWarning PgScrubber::acquire_blocked_alarm()
{
- ceph::timespan grace_period{m_debug_blockrange?4s:120s};
+ int grace = get_pg_cct()->_conf->osd_blocked_scrub_grace_period;
+ if (grace == 0) {
+ // we will not be sending any alarms re the blocked object
+ dout(20)
+ << __func__
+ << ": blocked-alarm disabled ('osd_blocked_scrub_grace_period' set to 0)"
+ << dendl;
+ return nullptr;
+ }
+ ceph::timespan grace_period{m_debug_blockrange ? 4s : seconds{grace}};
+ dout(30) << __func__ << ": timeout:" << grace_period.count() << dendl;
return std::make_unique<blocked_range_t>(m_osds,
grace_period,
*this,