From 05df94dfb30210651ebff772bddc4e93cdc9acaf Mon Sep 17 00:00:00 2001 From: Duncan Harvey Date: Wed, 26 Mar 2025 11:24:15 -0400 Subject: [PATCH 1/2] check if environment is supported by serverless compat --- .../com/datadog/ServerlessCompatAgent.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/main/java/com/datadog/ServerlessCompatAgent.java b/src/main/java/com/datadog/ServerlessCompatAgent.java index f3a67e7..097fc8d 100644 --- a/src/main/java/com/datadog/ServerlessCompatAgent.java +++ b/src/main/java/com/datadog/ServerlessCompatAgent.java @@ -7,9 +7,18 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +enum CloudEnvironment { + AZURE_FUNCTION, + AZURE_SPRING_APP, + GOOGLE_CLOUD_RUN_FUNCTION_1ST_GEN, + GOOGLE_CLOUD_RUN_FUNCTION_2ND_GEN, + UNKNOWN +} + public class ServerlessCompatAgent { private static final Logger log = LoggerFactory.getLogger(ServerlessCompatAgent.class); private static final String os = System.getProperty("os.name").toLowerCase(); @@ -23,7 +32,41 @@ public static boolean isLinux() { return os.contains("linux"); } + public static CloudEnvironment getEnvironment() { + Map env = System.getenv(); + + if (env.get("FUNCTIONS_EXTENSION_VERSION") != null && + env.get("FUNCTIONS_WORKER_RUNTIME") != null) { + return CloudEnvironment.AZURE_FUNCTION; + } + + if (env.get("ASCSVCRT_SPRING__APPLICATION__NAME") != null) { + return CloudEnvironment.AZURE_SPRING_APP; + } + + if (env.get("FUNCTION_NAME") != null && + env.get("GCP_PROJECT") != null) { + return CloudEnvironment.GOOGLE_CLOUD_RUN_FUNCTION_1ST_GEN; + } + + if (env.get("K_SERVICE") != null && + env.get("FUNCTION_TARGET") != null) { + return CloudEnvironment.GOOGLE_CLOUD_RUN_FUNCTION_2ND_GEN; + } + + return CloudEnvironment.UNKNOWN; + } + public static void premain(String agentArgs, Instrumentation instrumentation) { + CloudEnvironment environment = getEnvironment(); + log.debug("Environment detected: {}", environment); + + if (environment == CloudEnvironment.UNKNOWN) { + log.error("{} environment detected, will not start the Datadog Serverless Compatibility Layer", + environment); + return; + } + final String fileName; final String tempDirPath; From 2a3a6f2c0775af5935db76c1d6946fec1299511f Mon Sep 17 00:00:00 2001 From: Duncan Harvey Date: Thu, 27 Mar 2025 16:47:13 -0400 Subject: [PATCH 2/2] remove google cloud run function 2nd gen environment --- src/main/java/com/datadog/ServerlessCompatAgent.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/main/java/com/datadog/ServerlessCompatAgent.java b/src/main/java/com/datadog/ServerlessCompatAgent.java index 097fc8d..92d6d2a 100644 --- a/src/main/java/com/datadog/ServerlessCompatAgent.java +++ b/src/main/java/com/datadog/ServerlessCompatAgent.java @@ -15,7 +15,6 @@ enum CloudEnvironment { AZURE_FUNCTION, AZURE_SPRING_APP, GOOGLE_CLOUD_RUN_FUNCTION_1ST_GEN, - GOOGLE_CLOUD_RUN_FUNCTION_2ND_GEN, UNKNOWN } @@ -49,11 +48,6 @@ public static CloudEnvironment getEnvironment() { return CloudEnvironment.GOOGLE_CLOUD_RUN_FUNCTION_1ST_GEN; } - if (env.get("K_SERVICE") != null && - env.get("FUNCTION_TARGET") != null) { - return CloudEnvironment.GOOGLE_CLOUD_RUN_FUNCTION_2ND_GEN; - } - return CloudEnvironment.UNKNOWN; }