]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/multisite: fix test_bucket_remove false failure on bucket deletion check 68167/head
authorShilpa Jagannath <smanjara@redhat.com>
Wed, 1 Apr 2026 19:50:59 +0000 (19:50 +0000)
committerShilpa Jagannath <smanjara@redhat.com>
Wed, 1 Apr 2026 22:39:46 +0000 (22:39 +0000)
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 <smanjara@redhat.com>
src/test/rgw/rgw_multi/tests.py
src/test/rgw/rgw_multi/zone_rados.py

index f1893547d7ab35ff9a49f528afa178fbafa975fe..2b9c6cd106c4337da76c2ea7776882006eabe49e 100644 (file)
@@ -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):
index 73e04e7805e354109fdad9b9a97b5607b66fb054..b32351c5d745d8d7c0e260cf79af4ccf3fc826d7 100644 (file)
@@ -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: