From 31ca5e6355681324f522ade818358107fede54f3 Mon Sep 17 00:00:00 2001 From: aIbrahiim Date: Tue, 11 Nov 2025 15:46:31 +0200 Subject: [PATCH 1/2] Handle NotFound exception in bucket deletion test --- sdks/python/apache_beam/io/gcp/gcsio_integration_test.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py b/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py index 4616f007bfc5..e42f95e763d0 100644 --- a/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py +++ b/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py @@ -242,7 +242,12 @@ def test_create_default_bucket(self, mock_default_gcs_bucket_name): # verify soft delete policy is disabled by default in the default bucket # after creation self.assertEqual(bucket.soft_delete_policy.retention_duration_seconds, 0) - bucket.delete() + existing_bucket = self.gcsio.get_bucket(overridden_bucket_name) + if existing_bucket: + try: + existing_bucket.delete() + except NotFound: + pass self.assertIsNone(self.gcsio.get_bucket(overridden_bucket_name)) From fcda812a46f344fec0e02354ff447d07834f3f57 Mon Sep 17 00:00:00 2001 From: aIbrahiim Date: Wed, 12 Nov 2025 00:45:13 +0200 Subject: [PATCH 2/2] Added retry logic for bucket --- .../io/gcp/gcsio_integration_test.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py b/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py index e42f95e763d0..fa2049221980 100644 --- a/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py +++ b/sdks/python/apache_beam/io/gcp/gcsio_integration_test.py @@ -242,14 +242,27 @@ def test_create_default_bucket(self, mock_default_gcs_bucket_name): # verify soft delete policy is disabled by default in the default bucket # after creation self.assertEqual(bucket.soft_delete_policy.retention_duration_seconds, 0) - existing_bucket = self.gcsio.get_bucket(overridden_bucket_name) + max_retries = 5 + retry_delay = 1 + existing_bucket = None + for attempt in range(max_retries): + try: + existing_bucket = self.gcsio.get_bucket(overridden_bucket_name) + break + except NotFound: + if attempt < max_retries - 1: + time.sleep(retry_delay) + retry_delay *= 2 + else: + existing_bucket = None if existing_bucket: try: existing_bucket.delete() except NotFound: pass - - self.assertIsNone(self.gcsio.get_bucket(overridden_bucket_name)) + time.sleep(WAIT_BUCKET_PROPAGATION_SECONDS) + with self.assertRaises(NotFound): + self.gcsio.get_bucket(overridden_bucket_name) class GcsIOReadGzipTest(unittest.TestCase):