From d8ea5286214ede7a7fcf26a8961a3b1f2e91ca47 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Mon, 25 Jul 2022 03:03:19 +0300 Subject: [PATCH] Add magic sleep before deleteVolume on creation failure It seems Hetzner fails to accept our deleteVolume request so quickly after failing. We need to wait for about 10 seconds, I guess. The same magic sleep happens on deleteServer pack of requests. Please have patience... --- .../server_providers/hetzner/hetzner.dart | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart index 0a2c3c73..4c9664bb 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart @@ -271,10 +271,6 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { dataBase: newVolume, ); - if (details == null) { - deleteVolume(newVolume.id); - } - return details; } @@ -320,6 +316,8 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { print('Decoded data: $data'); ServerHostingDetails? serverDetails; + DioError? hetznerError; + bool success = false; try { final Response serverCreateResponse = await client.post( @@ -335,17 +333,25 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { apiToken: apiToken, provider: ServerProvider.hetzner, ); + success = true; } on DioError catch (e) { print(e); - deleteVolume(dataBase.id); - rethrow; + hetznerError = e; } catch (e) { print(e); - deleteVolume(dataBase.id); } finally { client.close(); } + if (!success) { + await Future.delayed(const Duration(seconds: 10)); + await deleteVolume(dbId); + } + + if (hetznerError != null) { + throw hetznerError; + } + return serverDetails; }