From 8dcb90f2e4c49f8fae761493648a9c95f056be4b Mon Sep 17 00:00:00 2001 From: lucasleao18 Date: Mon, 14 Sep 2026 18:59:54 -0300 Subject: [PATCH] fix(gcp-metadata): detect Cloud Run worker pools as serverless --- core/packages/gcp-metadata/src/gcp-residency.ts | 6 +++++- core/packages/gcp-metadata/test/gcp-residency.test.ts | 6 ++++++ core/packages/gcp-metadata/test/utils/gcp-residency.ts | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/packages/gcp-metadata/src/gcp-residency.ts b/core/packages/gcp-metadata/src/gcp-residency.ts index 8c65d260efa2..1fdf14c36d84 100644 --- a/core/packages/gcp-metadata/src/gcp-residency.ts +++ b/core/packages/gcp-metadata/src/gcp-residency.ts @@ -47,11 +47,15 @@ export function isGoogleCloudServerless(): boolean { * `K_SERVICE` is used in Cloud Run and newer Cloud Functions environments: * - See {@link https://cloud.google.com/run/docs/container-contract#env-vars Cloud Run environment variables}. * - See {@link https://cloud.google.com/functions/docs/env-var Cloud Functions newer runtimes}. + * + * `CLOUD_RUN_WORKER_POOL` is used for Cloud Run worker pools: + * - See {@link https://cloud.google.com/run/docs/container-contract#env-vars Cloud Run environment variables}. */ const isGFEnvironment = process.env.CLOUD_RUN_JOB || process.env.FUNCTION_NAME || - process.env.K_SERVICE; + process.env.K_SERVICE || + process.env.CLOUD_RUN_WORKER_POOL; return !!isGFEnvironment; } diff --git a/core/packages/gcp-metadata/test/gcp-residency.test.ts b/core/packages/gcp-metadata/test/gcp-residency.test.ts index c4e2422e2cd3..d84d8bd0890c 100644 --- a/core/packages/gcp-metadata/test/gcp-residency.test.ts +++ b/core/packages/gcp-metadata/test/gcp-residency.test.ts @@ -57,6 +57,12 @@ describe('gcp-residency', () => { assert(gcpResidency.isGoogleCloudServerless()); }); + it('should return `true` if `CLOUD_RUN_WORKER_POOL` env is set', () => { + process.env.CLOUD_RUN_WORKER_POOL = '1'; + + assert(gcpResidency.isGoogleCloudServerless()); + }); + it('should return `false` if none of the envs are set', () => { assert.equal(gcpResidency.isGoogleCloudServerless(), false); }); diff --git a/core/packages/gcp-metadata/test/utils/gcp-residency.ts b/core/packages/gcp-metadata/test/utils/gcp-residency.ts index 65734021edee..0660b4cec0e0 100644 --- a/core/packages/gcp-metadata/test/utils/gcp-residency.ts +++ b/core/packages/gcp-metadata/test/utils/gcp-residency.ts @@ -109,6 +109,7 @@ export class GCPResidencyUtil { delete customEnv.CLOUD_RUN_JOB; delete customEnv.FUNCTION_NAME; delete customEnv.K_SERVICE; + delete customEnv.CLOUD_RUN_WORKER_POOL; this.stubs.processEnv ??= this.sandbox.stub(process, 'env'); this.stubs.processEnv.value(customEnv);