From fd1afc2cbe9e9fdc3427454cb73b514ff148b6fe Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Fri, 14 Mar 2025 11:04:49 -0700 Subject: [PATCH 1/2] fix: handle disabled/destroyed values in gcp sync --- backend/src/services/secret-sync/gcp/gcp-sync-fns.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts b/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts index f0eb3ce88..5e6006d86 100644 --- a/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts +++ b/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts @@ -71,8 +71,13 @@ const getGcpSecrets = async (accessToken: string, secretSync: TGcpSyncWithCreden res[key] = Buffer.from(secretLatest.payload.data, "base64").toString("utf-8"); } catch (error) { - // when a secret in GCP has no versions, we treat it as if it's a blank value - if (error instanceof AxiosError && error.response?.status === 404) { + // when a secret in GCP has no versions, or is disabled/destroyed, we treat it as if it's a blank value + if ( + error instanceof AxiosError && + (error.response?.status === 404 || + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + (error.response?.status === 400 && error.response.data.error.status === "FAILED_PRECONDITION")) + ) { res[key] = ""; } else { throw new SecretSyncError({ From 48943b4d78cce286ad403913befe2c488d1b8892 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Fri, 14 Mar 2025 11:26:59 -0700 Subject: [PATCH 2/2] improvement: refine status check --- backend/src/services/secret-sync/gcp/gcp-sync-fns.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts b/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts index 5e6006d86..867b0b870 100644 --- a/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts +++ b/backend/src/services/secret-sync/gcp/gcp-sync-fns.ts @@ -75,8 +75,11 @@ const getGcpSecrets = async (accessToken: string, secretSync: TGcpSyncWithCreden if ( error instanceof AxiosError && (error.response?.status === 404 || - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - (error.response?.status === 400 && error.response.data.error.status === "FAILED_PRECONDITION")) + (error.response?.status === 400 && + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + error.response.data.error.status === "FAILED_PRECONDITION" && + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call + error.response.data.error.message.match(/(?:disabled|destroyed)/i))) ) { res[key] = ""; } else {