From 7c23713b1a3c14b135f8eb6fdb36d113ea860e4e Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 7 Mar 2017 11:16:43 -0500 Subject: [PATCH] rgw: fix marker comparison to detect end of mdlog period Fixes: http://tracker.ceph.com/issues/18639 Signed-off-by: Casey Bodley --- src/rgw/rgw_sync.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/rgw/rgw_sync.cc b/src/rgw/rgw_sync.cc index be1fa2fdd88..0aad40c23bb 100644 --- a/src/rgw/rgw_sync.cc +++ b/src/rgw/rgw_sync.cc @@ -1602,10 +1602,16 @@ public: *reset_backoff = false; // back off and try again later return retcode; } - for (log_iter = log_entries.begin(); log_iter != log_entries.end(); ++log_iter) { - if (!period_marker.empty() && period_marker < log_iter->id) { + for (log_iter = log_entries.begin(); log_iter != log_entries.end() && !done_with_period; ++log_iter) { + if (!period_marker.empty() && period_marker <= log_iter->id) { done_with_period = true; - break; + if (period_marker < log_iter->id) { + ldout(cct, 10) << "found key=" << log_iter->id + << " past period_marker=" << period_marker << dendl; + break; + } + ldout(cct, 10) << "found key at period_marker=" << period_marker << dendl; + // sync this entry, then return control to RGWMetaSyncCR } if (!mdlog_entry.convert_from(*log_iter)) { ldout(sync_env->cct, 0) << __func__ << ":" << __LINE__ << ": ERROR: failed to convert mdlog entry, shard_id=" << shard_id << " log_entry: " << log_iter->id << ":" << log_iter->section << ":" << log_iter->name << ":" << log_iter->timestamp << " ... skipping entry" << dendl; -- 2.39.5