From: Josh Durgin Date: Fri, 25 Oct 2013 19:58:10 +0000 (-0700) Subject: worker: only wait for existing objects X-Git-Tag: v1.1~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7832d5ba177898c7bf7b38b8d8271a75507c53fc;p=radosgw-agent.git 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 --- 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,