diff --git a/swift/obj/replicator.py b/swift/obj/replicator.py index 45d8a3f85b..8b5100aae8 100644 --- a/swift/obj/replicator.py +++ b/swift/obj/replicator.py @@ -592,8 +592,8 @@ class ObjectReplicator(Daemon): self.logger.increment('partition.lock-failure.count') except (Exception, Timeout): self.logger.exception("Error syncing handoff partition") - stats.add_failure_stats(failure_devs_info) finally: + stats.add_failure_stats(failure_devs_info) target_devs_info = set([(target_dev['replication_ip'], target_dev['device']) for target_dev in job['nodes']]) diff --git a/test/unit/obj/test_replicator.py b/test/unit/obj/test_replicator.py index 53eac6db2f..25fe042757 100644 --- a/test/unit/obj/test_replicator.py +++ b/test/unit/obj/test_replicator.py @@ -1004,6 +1004,7 @@ class TestObjectReplicator(unittest.TestCase): # stopped after handoffs! self.assertEqual(1, self.replicator.handoffs_remaining) self.assertEqual(8, self.replicator.job_count) + self.assertEqual(self.replicator.total_stats.failure, 1) # in addition to the two update_deleted jobs as many as "concurrency" # jobs may have been spawned into the pool before the failed # update_deleted job incremented handoffs_remaining and caused the