From 4dcc198133c1c7a2175d8fe6b6c971862d766c52 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Fri, 10 Jul 2026 03:31:06 -0700 Subject: [PATCH] Retry Azure flexible server creation on ServerDropping error. PiperOrigin-RevId: 945614755 --- .../providers/azure/azure_flexible_server.py | 4 ++ .../azure/azure_flexible_server_test.py | 41 +++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/perfkitbenchmarker/providers/azure/azure_flexible_server.py b/perfkitbenchmarker/providers/azure/azure_flexible_server.py index 4ddc8ae811..9dde7b7a2e 100644 --- a/perfkitbenchmarker/providers/azure/azure_flexible_server.py +++ b/perfkitbenchmarker/providers/azure/azure_flexible_server.py @@ -200,6 +200,10 @@ def _WaitForAzureAsyncOperation(self, async_url: str) -> None: if status == 'Succeeded': return if status == 'Failed': + if 'ServerDropping' in stdout: + raise errors.Resource.RetryableCreationError( + f'Azure async operation failed (retryable): {stdout}' + ) raise errors.Resource.CreationError( f'Azure async operation failed: {stdout}' ) diff --git a/tests/providers/azure/azure_flexible_server_test.py b/tests/providers/azure/azure_flexible_server_test.py index 3d70b38666..9688e413e3 100644 --- a/tests/providers/azure/azure_flexible_server_test.py +++ b/tests/providers/azure/azure_flexible_server_test.py @@ -377,6 +377,47 @@ def testCreatePostgresPremiumV2Fails(self): with self.assertRaises(errors.Resource.CreationError): bm_spec.relational_db._Create() # pyrefly: ignore[missing-attribute] + def testCreatePostgresPremiumV2ServerDroppingFails(self): + self.MockIssueCommand({ + 'rest --method PUT': [( + '', + "'Azure-AsyncOperation': 'https://management.azure.com/async_op'", + 0, + )], + 'rest --method GET': [( + '{"status": "Failed", "error": {"code": "ServerDropping"}}', + '', + 0, + )], + }) + yaml_spec = inspect.cleandoc(f""" + sysbench: + relational_db: + cloud: {provider_info.AZURE} + engine: {sql_engine_utils.FLEXIBLE_SERVER_POSTGRES} + engine_version: '13' + db_tier: GeneralPurpose + db_spec: + {provider_info.AZURE}: + machine_type: Standard_D2ds_v4 + zone: eastus + db_disk_spec: + {provider_info.AZURE}: + disk_size: 128 + disk_type: PremiumV2_LRS + vm_groups: + clients: + vm_spec: *default_dual_core + disk_spec: *default_500_gb + """) + bm_spec = pkb_common_test_case.CreateBenchmarkSpecFromYaml( + yaml_spec, 'sysbench' + ) + bm_spec.ConstructRelationalDb() + + with self.assertRaises(errors.Resource.RetryableCreationError): + bm_spec.relational_db._Create() # pyrefly: ignore[missing-attribute] + def testCreatePostgresPremiumV2NoAsyncHeader(self): self.MockIssueCommand( {