From: Josh Durgin Date: Thu, 18 Dec 2014 05:28:38 +0000 (-0800) Subject: sync: use ' ' as the default shard so retries can be stored X-Git-Tag: v1.2~4^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8d47f62f6f179040c504eba6ed01094a24da944e;p=radosgw-agent.git 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 --- 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)