From 7832d5ba177898c7bf7b38b8d8271a75507c53fc Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Fri, 25 Oct 2013 12:58:10 -0700 Subject: [PATCH] worker: only wait for existing objects Copy operations are long running and use a state log, but deletes do not. Signed-off-by: Josh Durgin --- radosgw_agent/worker.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/radosgw_agent/worker.py b/radosgw_agent/worker.py index 538fee9..7b5b510 100644 --- a/radosgw_agent/worker.py +++ b/radosgw_agent/worker.py @@ -170,15 +170,18 @@ class DataWorker(Worker): self.daemon_id = kwargs['daemon_id'] def sync_object(self, bucket, obj): + log.debug('sync_object %s/%s', bucket, obj) self.op_id += 1 local_op_id = self.local_lock_id + ':' + str(self.op_id) try: + found = True until = time.time() + self.object_sync_timeout client.sync_object_intra_region(self.dest_conn, bucket, obj, self.src.zone.name, self.daemon_id, local_op_id) except client.NotFound: + found = False log.debug('"%s/%s" not found on master, deleting from secondary', bucket, obj) try: @@ -194,7 +197,8 @@ class DataWorker(Worker): raise except Exception as e: log.debug('exception during sync: %s', e) - self.wait_for_object(bucket, obj, until) + if found: + self.wait_for_object(bucket, obj, until) # TODO: clean up old op states try: client.remove_op_state(self.dest_conn, self.daemon_id, local_op_id, -- 2.47.3