From 8d47f62f6f179040c504eba6ed01094a24da944e Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Wed, 17 Dec 2014 21:28:38 -0800 Subject: [PATCH] sync: use ' ' as the default shard so retries can be stored The replica log api doesn't allow empty markers, but we may need to store retries in the replica log even if there are no log entries. Use ' ' as a marker instead, since it is before all possible markers. Signed-off-by: Josh Durgin --- radosgw_agent/sync.py | 6 +++++- radosgw_agent/worker.py | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/radosgw_agent/sync.py b/radosgw_agent/sync.py index 67ebea6..86f007d 100644 --- a/radosgw_agent/sync.py +++ b/radosgw_agent/sync.py @@ -194,7 +194,7 @@ class IncrementalSyncer(Syncer): shard_num, self.max_entries) except client.NotFound: # no entries past this marker yet, but we my have retries - last_marker = '' + last_marker = ' ' log_entries = [] return last_marker, log_entries @@ -255,6 +255,8 @@ class DataSyncerFull(Syncer): # setting an empty marker returns an error if info['marker']: self.shard_info[shard] = info['marker'] + else: + self.shard_info[shard] = ' ' # get list of buckets after getting any markers to avoid skipping # entries added before we got the marker info @@ -298,6 +300,8 @@ class MetaSyncerFull(Syncer): # setting an empty marker returns an error if info['marker']: self.shard_info[shard_num] = info['marker'] + else: + self.shard_info[shard_num] = ' ' self.metadata_by_shard = {} for section in self.sections: diff --git a/radosgw_agent/worker.py b/radosgw_agent/worker.py index d46061e..4d7989c 100644 --- a/radosgw_agent/worker.py +++ b/radosgw_agent/worker.py @@ -301,7 +301,7 @@ class DataWorkerIncremental(IncrementalMixin, DataWorker): if entries: marker = entries[-1].marker else: - marker = '' + marker = ' ' if len(log_entries) < self.max_entries: break @@ -336,7 +336,7 @@ class DataWorkerIncremental(IncrementalMixin, DataWorker): except client.NotFound: log.debug('no worker bound found for bucket instance "%s"', bucket_instance) - marker, timestamp, retries = '', DEFAULT_TIME, [] + marker, timestamp, retries = ' ', DEFAULT_TIME, [] try: sync_result = self.inc_sync_bucket_instance(bucket_instance, marker, @@ -360,7 +360,7 @@ class DataWorkerFull(DataWorker): marker = client.get_log_info(self.src_conn, 'bucket-index', instance)['max_marker'] except client.NotFound: - marker = '' + marker = ' ' log.debug('bucket instance is "%s" with marker %s', instance, marker) objects = client.list_objects_in_bucket(self.src_conn, bucket) -- 2.47.3