From 042860a45d4fe87732ba77ac9dc1e4f4c533efd4 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 7 Jan 2020 13:30:51 -0500 Subject: [PATCH] rgw: remove spawned_keys filter from incremental data sync the spawned_keys filtering is valid "as long as we don't yield", according to code comments. however, proper enforcement of the spawn window necessitates yielding when we exceed that window the key-based filtering provided by spawned_keys is actually already satisfied by the call to marker_tracker->index_key_to_marker(), which also takes completions (either from try_update_high_marker() or finish()) into account Signed-off-by: Casey Bodley (cherry picked from commit 3e2795fd8f14afdab909c3a15b65f47f390b2230) --- src/rgw/rgw_data_sync.cc | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index bad204699ece..3f70ff8481b5 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -1146,8 +1146,6 @@ class RGWDataSyncShardCR : public RGWCoroutine { bool *reset_backoff; - set spawned_keys; - boost::intrusive_ptr lease_cr; boost::intrusive_ptr lease_stack; string status_oid; @@ -1417,9 +1415,7 @@ public: } omapkeys.reset(); -#define INCREMENTAL_MAX_ENTRIES 100 tn->log(20, SSTR("shard_id=" << shard_id << " sync_marker=" << sync_marker.marker)); - spawned_keys.clear(); yield call(new RGWReadRemoteDataLogShardCR(sync_env, shard_id, sync_marker.marker, &next_marker, &log_entries, &truncated)); if (retcode < 0 && retcode != -ENOENT) { @@ -1443,18 +1439,7 @@ public: if (!marker_tracker->start(log_iter->log_id, 0, log_iter->log_timestamp)) { tn->log(0, SSTR("ERROR: cannot start syncing " << log_iter->log_id << ". Duplicate entry?")); } else { - /* - * don't spawn the same key more than once. We can do that as long as we don't yield - */ - if (spawned_keys.find(log_iter->entry.key) == spawned_keys.end()) { - spawned_keys.insert(log_iter->entry.key); - spawn(new RGWDataSyncSingleEntryCR(sync_env, log_iter->entry.key, log_iter->log_id, marker_tracker, error_repo, false, tn), false); - if (retcode < 0) { - stop_spawned_services(); - drain_all(); - return set_cr_error(retcode); - } - } + spawn(new RGWDataSyncSingleEntryCR(sync_env, log_iter->entry.key, log_iter->log_id, marker_tracker, error_repo, false, tn), false); } while ((int)num_spawned() > spawn_window) { set_status() << "num_spawned() > spawn_window"; -- 2.47.3