From: Shilpa Jagannath Date: Wed, 1 Apr 2026 19:50:59 +0000 (+0000) Subject: qa/multisite: fix test_bucket_remove false failure on bucket deletion check X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b20a3b7c67952e12a1df4ac2c51e1baee9ffcce0;p=ceph.git qa/multisite: fix test_bucket_remove false failure on bucket deletion check get_bucket() was silently returning None for missing buckets instead of raising, causing check_all_buckets_dont_exist() to always report buckets as still present after deletion. fix get_bucket() to propagate ClientError also, replace bare exception with specific ClientError handling and logging in check_all_buckets_exist and check_all_buckets_dont_exist Signed-off-by: Shilpa Jagannath --- diff --git a/src/test/rgw/rgw_multi/tests.py b/src/test/rgw/rgw_multi/tests.py index f1893547d7ab..2b9c6cd106c4 100644 --- a/src/test/rgw/rgw_multi/tests.py +++ b/src/test/rgw/rgw_multi/tests.py @@ -578,8 +578,12 @@ def check_all_buckets_exist(zone_conn, buckets): for b in buckets: try: zone_conn.get_bucket(b) - except: - log.critical('zone %s does not contain bucket %s', zone_conn.zone.name, b) + except ClientError as e: + errcode = e.response['Error']['Code'] + if errcode in ['404', 'NoSuchBucket']: + log.critical('zone %s does not contain bucket %s', zone_conn.zone.name, b) + else: + log.critical('zone %s unexpected error checking bucket %s: %s', zone_conn.zone.name, b, errcode) return False return True @@ -588,16 +592,20 @@ def check_all_buckets_dont_exist(zone_conn, buckets): if not zone_conn.zone.has_buckets(): return True + remaining = [] for b in buckets: try: zone_conn.get_bucket(b) - except: - continue - + except ClientError as e: + errcode = e.response['Error']['Code'] + if errcode in ['404', 'NoSuchBucket']: + continue + log.critical('zone %s unexpected error checking bucket %s: %s', zone_conn.zone, b, errcode) + return False log.critical('zone %s contains bucket %s', zone_conn.zone, b) - return False + remaining.append(b) - return True + return len(remaining) == 0 def get_topics(zone): @@ -768,7 +776,7 @@ def test_bucket_remove(): log.info("Checking zone=%s for deleted buckets", zone.name) result = check_all_buckets_dont_exist(zone, buckets) if not result: - log.error("Zone %s still has buckets: %s", zone.name, buckets) + log.error("Zone %s still has buckets", zone.name) assert result def check_bucket_eq(zone_conn1, zone_conn2, bucket): diff --git a/src/test/rgw/rgw_multi/zone_rados.py b/src/test/rgw/rgw_multi/zone_rados.py index 73e04e7805e3..b32351c5d745 100644 --- a/src/test/rgw/rgw_multi/zone_rados.py +++ b/src/test/rgw/rgw_multi/zone_rados.py @@ -66,15 +66,8 @@ class RadosZone(Zone): super(RadosZone.Conn, self).__init__(zone, credentials) def get_bucket(self, name): - try: - self.s3_client.head_bucket(Bucket=name) - # if no exception, bucket exists - return self.s3_resource.Bucket(name) - except ClientError as e: - error_code = e.response['Error']['Code'] - if error_code in ['404', 'NoSuchBucket']: - return None - raise + self.s3_client.head_bucket(Bucket=name) + return self.s3_resource.Bucket(name) def create_bucket(self, name): try: