]> git-server-git.apps.pok.os.sepia.ceph.com Git - radosgw-agent.git/commitdiff
DataWorker.sync_object does not fail on NotModified
authorCasey Bodley <cbodley@redhat.com>
Thu, 9 Jun 2016 19:15:17 +0000 (15:15 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 10 Jun 2016 14:28:05 +0000 (10:28 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
radosgw_agent/tests/test_worker.py
radosgw_agent/worker.py

index f29e8a1ca802ac82dab042d2bbc6cfe49e714c26..7d7d02d3abb6532044d74158cbd87ba360186ff8 100644 (file)
@@ -6,7 +6,7 @@ import httpretty
 import re
 
 from radosgw_agent import worker, client
-from radosgw_agent.exceptions import HttpError, NotFound, BucketEmpty, SyncTimedOut
+from radosgw_agent.exceptions import HttpError, NotModified, NotFound, BucketEmpty, SyncTimedOut
 
 
 class TestSyncObject(object):
@@ -26,6 +26,13 @@ class TestSyncObject(object):
             w = worker.DataWorker(None, None, None, self.src, None, daemon_id=1)
             assert w.sync_object('mah-bucket', self.obj) is True
 
+    def test_syncs_correctly_on_not_modified(self):
+        self.client.sync_object_intra_region = Mock(side_effect=NotModified(304, ''))
+
+        with patch('radosgw_agent.worker.client'):
+            w = worker.DataWorker(None, None, None, self.src, None, daemon_id=1)
+            assert w.sync_object('mah-bucket', self.obj) is True
+
     def test_syncs_not_found_on_master_deleting_from_secondary(self):
         self.client.sync_object_intra_region = Mock(side_effect=NotFound(404, ''))
 
index e5dde5a31ba4211e7f8bf7a6bc205af4aa67cac8..6271cb90abb498f8b1d723074a0405580eb166b0 100644 (file)
@@ -9,7 +9,7 @@ import time
 from radosgw_agent import client
 from radosgw_agent import lock
 from radosgw_agent.util import obj as obj_, get_dev_logger
-from radosgw_agent.exceptions import SkipShard, SyncError, SyncTimedOut, SyncFailed, NotFound, BucketEmpty
+from radosgw_agent.exceptions import SkipShard, SyncError, SyncTimedOut, SyncFailed, NotModified, NotFound, BucketEmpty
 from radosgw_agent.constants import DEFAULT_TIME, RESULT_SUCCESS, RESULT_ERROR
 
 log = logging.getLogger(__name__)
@@ -231,6 +231,10 @@ class DataWorker(Worker):
                                             self.daemon_id,
                                             local_op_id)
             found = True
+        except NotModified:
+            log.debug('object "%s/%s" found on master and not modified',
+                      bucket, obj.name)
+            found = True
         except NotFound:
             log.debug('object "%s/%s" not found on master, deleting from secondary',
                       bucket, obj.name)