From 6129289be4d6de3e3ba790e379a264daba3349e7 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 19 Aug 2019 16:32:22 -0500 Subject: [PATCH] osd/PeeringState: do not complain about past_intervals constrained by oldest epoch The start of the required interval has a floor set by the oldest osdmap epoch we have. That can lead to an invalid/empty required interval (because the start is >= the end), but the PG may still have past intervals. That can be cause by a slow PG deletion. No need to complain about this harmless condition. Fixes: https://tracker.ceph.com/issues/39546 Signed-off-by: Sage Weil (cherry picked from commit b1396774a40b7b3e54c9f52b6bb6f03d31c35401) Conflicts: src/osd/PeeringState.cc - file does not exist in mimic; made the changes manually in src/osd/PG.cc - mimic has a different way of getting the oldest osdmap --- src/osd/PG.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index bef3213940128..ebbf71ff19a7a 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -896,11 +896,15 @@ bool PG::needs_backfill() const void PG::check_past_interval_bounds() const { + auto oldest_epoch = osd->get_superblock().oldest_map; auto rpib = get_required_past_interval_bounds( info, - osd->get_superblock().oldest_map); + oldest_epoch); if (rpib.first >= rpib.second) { - if (!past_intervals.empty()) { + // do not warn if the start bound is dictated by oldest_map; the + // past intervals are presumably appropriate given the pg info. + if (!past_intervals.empty() && + rpib.first > oldest_epoch) { osd->clog->error() << info.pgid << " required past_interval bounds are" << " empty [" << rpib << ") but past_intervals is not: " << past_intervals;