By weighting the reports we were making it really hard to get rid of a
clock skew warning once the cause had been fixed.
Instead, as soon as we get a clean bill of health, let's run a new round
and soon as possible and ascertain whether that was a transient fix or
for realsies. That should be better than the alternative of waiting for
an hour or something (for a large enough skew) for the warning to go
away - and with it, the admin's sanity ("WHAT AM I DOING WRONG???").
Fixes: #14175
Signed-off-by: Joao Eduardo Luis <joao@suse.de>
dout(1) << __func__
<< " no clock skews found after " << timecheck_rounds_since_clean
<< " rounds" << dendl;
+ // make sure the skews are really gone and not just a transient success
+ // this will run just once if not in the presence of skews again.
+ timecheck_rounds_since_clean = 1;
+ timecheck_reset_event();
timecheck_rounds_since_clean = 0;
}
<< " delta " << delta << " skew_bound " << skew_bound
<< " latency " << latency << dendl;
- if (timecheck_skews.count(other) == 0) {
- timecheck_skews[other] = skew_bound;
- } else {
- timecheck_skews[other] = (timecheck_skews[other]*0.8)+(skew_bound*0.2);
- }
+ timecheck_skews[other] = skew_bound;
timecheck_acks++;
if (timecheck_acks == quorum.size()) {