]> git-server-git.apps.pok.os.sepia.ceph.com Git - radosgw-agent.git/commitdiff
sync: use ' ' as the default shard so retries can be stored
authorJosh Durgin <jdurgin@redhat.com>
Thu, 18 Dec 2014 05:28:38 +0000 (21:28 -0800)
committerJosh Durgin <jdurgin@redhat.com>
Fri, 19 Dec 2014 11:22:09 +0000 (03:22 -0800)
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 <jdurgin@redhat.com>
radosgw_agent/sync.py
radosgw_agent/worker.py

index 67ebea6b5ab663f9c6412aa514fe3e309cd7301b..86f007d70026e9c242a1d77e70a3b15e2689035c 100644 (file)
@@ -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:
index d46061ed31f06d241fca0010168b3644d422b04d..4d7989c816b46eea1180fc42b54579c44a2c3377 100644 (file)
@@ -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)