From 2b2d78685420cd882400c588378864248de4f5d0 Mon Sep 17 00:00:00 2001 From: Vemparala Surya Vamsi <121419957+vsvamsi1@users.noreply.github.com> Date: Thu, 27 Mar 2025 23:14:45 +0530 Subject: [PATCH] chore: added plugin tags (#39955) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Added plugin tags to distinguish between spans shared by different plugin implementation. Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.Datasource,@tag.Sanity" ### :mag: Cypress test results > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: > Commit: bddf47f89cc0abac19244db557fcf24fc63d1f9d > Cypress dashboard. > Tags: `@tag.Datasource,@tag.Sanity` > Spec: >
Thu, 27 Mar 2025 14:03:11 UTC ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Enhanced observability across multiple integrations: Various connectors have been updated to include additional contextual identifiers during execution. This improvement enhances the monitoring of API calls and data operations, potentially accelerating issue detection and resolution while maintaining seamless performance. --- .../helpers/RestAPIActivateUtils.java | 2 ++ .../external/plugins/GoogleSheetsPlugin.java | 2 ++ .../com/external/plugins/GraphQLPlugin.java | 1 + .../com/external/plugins/MongoPlugin.java | 1 + .../com/external/plugins/MssqlPlugin.java | 1 + .../com/external/plugins/MySqlPlugin.java | 5 ++++ .../com/external/plugins/PostgresPlugin.java | 1 + .../com/external/plugins/RestApiPlugin.java | 3 +++ .../configurations/NoTagsMeterFilter.java | 26 +++++++++---------- 9 files changed, 29 insertions(+), 13 deletions(-) diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/RestAPIActivateUtils.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/RestAPIActivateUtils.java index 5c82da7b0f..0edb631458 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/RestAPIActivateUtils.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/restApiUtils/helpers/RestAPIActivateUtils.java @@ -77,8 +77,10 @@ public class RestAPIActivateUtils { ActionExecutionResult errorResult, RequestCaptureFilter requestCaptureFilter, DatasourceConfiguration datasourceConfiguration, + String className, ObservationRegistry observationRegistry) { return httpCall(client, httpMethod, uri, requestBody, 0) + .tag("plugin", className) .name(ACTUAL_API_CALL) .tap(Micrometer.observation(observationRegistry)) .flatMap(clientResponse -> clientResponse.toEntity(byte[].class)) diff --git a/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/plugins/GoogleSheetsPlugin.java b/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/plugins/GoogleSheetsPlugin.java index a3c4eb04f0..2567302346 100644 --- a/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/plugins/GoogleSheetsPlugin.java +++ b/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/plugins/GoogleSheetsPlugin.java @@ -161,6 +161,7 @@ public class GoogleSheetsPlugin extends BasePlugin { prepareConfigurationsForExecution(executeActionDTO, actionConfiguration, datasourceConfiguration); return this.executeCommon(connection, datasourceConfiguration, actionConfiguration, featureFlagMap) + .tag("plugin", this.getClass().getName()) .name(PLUGIN_EXECUTE_COMMON) .tap(Micrometer.observation(observationRegistry)); } @@ -222,6 +223,7 @@ public class GoogleSheetsPlugin extends BasePlugin { + oauth2.getAuthenticationResponse() .getToken())) .exchange() + .tag("plugin", this.getClass().getName()) .name(ACTUAL_API_CALL) .tap(Micrometer.observation(observationRegistry)) .flatMap(clientResponse -> clientResponse.toEntity(byte[].class)) diff --git a/app/server/appsmith-plugins/graphqlPlugin/src/main/java/com/external/plugins/GraphQLPlugin.java b/app/server/appsmith-plugins/graphqlPlugin/src/main/java/com/external/plugins/GraphQLPlugin.java index ff963c03d1..79950182de 100644 --- a/app/server/appsmith-plugins/graphqlPlugin/src/main/java/com/external/plugins/GraphQLPlugin.java +++ b/app/server/appsmith-plugins/graphqlPlugin/src/main/java/com/external/plugins/GraphQLPlugin.java @@ -286,6 +286,7 @@ public class GraphQLPlugin extends BasePlugin { errorResult, requestCaptureFilter, datasourceConfiguration, + this.getClass().getName(), ObservationRegistry.NOOP) .onErrorResume(error -> { boolean isBodySentWithApiRequest = requestBodyObj == null ? false : true; diff --git a/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java b/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java index dbf87a038b..39a31b8257 100644 --- a/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java +++ b/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java @@ -297,6 +297,7 @@ public class MongoPlugin extends BasePlugin { actionConfiguration.setFormData(formData); return this.executeCommon(mongoClient, datasourceConfiguration, actionConfiguration, parameters) + .tag("plugin", this.getClass().getName()) .name(PLUGIN_EXECUTE_COMMON) .tap(Micrometer.observation(observationRegistry)); } diff --git a/app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java b/app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java index 361ba70e1e..9285284d04 100644 --- a/app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java +++ b/app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java @@ -188,6 +188,7 @@ public class MssqlPlugin extends BasePlugin { String updatedQuery = MustacheHelper.replaceMustacheWithQuestionMark(query, mustacheKeysInOrder); actionConfiguration.setBody(updatedQuery); return executeCommon(hikariDSConnection, actionConfiguration, TRUE, mustacheKeysInOrder, executeActionDTO) + .tag("plugin", this.getClass().getName()) .name(ActionSpanCE.PLUGIN_EXECUTE_COMMON) .tap(Micrometer.observation(observationRegistry)); } diff --git a/app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java b/app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java index 729deb41a7..263eca5e21 100644 --- a/app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java +++ b/app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java @@ -240,6 +240,7 @@ public class MySqlPlugin extends BasePlugin { if (FALSE.equals(isPreparedStatement)) { prepareConfigurationsForExecution(executeActionDTO, actionConfiguration, datasourceConfiguration); return executeCommon(connectionContext, actionConfiguration, FALSE, null, null, requestData) + .tag("plugin", this.getClass().getName()) .name(PLUGIN_EXECUTE_COMMON) .tap(Micrometer.observation(observationRegistry)); } @@ -258,6 +259,7 @@ public class MySqlPlugin extends BasePlugin { mustacheKeysInOrder, executeActionDTO, requestData) + .tag("plugin", this.getClass().getName()) .name(PLUGIN_EXECUTE_COMMON) .tap(Micrometer.observation(observationRegistry)); } @@ -364,6 +366,9 @@ public class MySqlPlugin extends BasePlugin { executeActionDTO, requestData, psParams) + .tag( + "plugin", + this.getClass().getName()) .name(CREATE_AND_EXECUTE_QUERY_FROM_CONNECTION) .tap(Micrometer.observation(observationRegistry)); } diff --git a/app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java b/app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java index 107957fbe1..293aedd293 100644 --- a/app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java +++ b/app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java @@ -301,6 +301,7 @@ public class PostgresPlugin extends BasePlugin { mustacheKeysInOrder, executeActionDTO, explicitCastDataTypes) + .tag("plugin", this.getClass().getName()) .name(PLUGIN_EXECUTE_COMMON) .tap(Micrometer.observation(observationRegistry)); } diff --git a/app/server/appsmith-plugins/restApiPlugin/src/main/java/com/external/plugins/RestApiPlugin.java b/app/server/appsmith-plugins/restApiPlugin/src/main/java/com/external/plugins/RestApiPlugin.java index f1111d866a..152d881aee 100644 --- a/app/server/appsmith-plugins/restApiPlugin/src/main/java/com/external/plugins/RestApiPlugin.java +++ b/app/server/appsmith-plugins/restApiPlugin/src/main/java/com/external/plugins/RestApiPlugin.java @@ -130,6 +130,7 @@ public class RestApiPlugin extends BasePlugin { headerUtils.setHeaderFromAutoGeneratedHeaders(actionConfiguration); return this.executeCommon(connection, datasourceConfiguration, actionConfiguration, parameters) + .tag("plugin", this.getClass().getName()) .name(PLUGIN_EXECUTE_COMMON) .tap(Micrometer.observation(observationRegistry)); } @@ -215,7 +216,9 @@ public class RestApiPlugin extends BasePlugin { errorResult, requestCaptureFilter, datasourceConfiguration, + this.getClass().getName(), observationRegistry) + .tag("plugin", this.getClass().getName()) .name(TRIGGER_API_CALL) .tap(Micrometer.observation(observationRegistry)) .onErrorResume(error -> { diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/NoTagsMeterFilter.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/NoTagsMeterFilter.java index fb3d82609a..2a23a7cd2f 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/NoTagsMeterFilter.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/NoTagsMeterFilter.java @@ -8,9 +8,7 @@ import io.micrometer.core.instrument.config.MeterFilter; import java.util.List; import java.util.Map; -import static com.appsmith.external.constants.spans.ce.ActionSpanCE.ACTION_EXECUTION_DATASOURCE_CONTEXT; -import static com.appsmith.external.constants.spans.ce.ActionSpanCE.ACTION_EXECUTION_PLUGIN_EXECUTION; -import static com.appsmith.external.constants.spans.ce.ActionSpanCE.ACTION_EXECUTION_SERVER_EXECUTION; +import static com.appsmith.external.constants.spans.ce.ActionSpanCE.*; import static com.appsmith.external.git.constants.ce.GitSpanCE.FS_FETCH_REMOTE; import static com.appsmith.external.git.constants.ce.GitSpanCE.FS_RESET; import static com.appsmith.external.git.constants.ce.GitSpanCE.FS_STATUS; @@ -19,16 +17,18 @@ import static com.appsmith.external.git.constants.ce.GitSpanCE.JGIT_RESET_HARD; import static com.appsmith.external.git.constants.ce.GitSpanCE.JGIT_STATUS; public class NoTagsMeterFilter implements MeterFilter { - private static final Map> seriesExceptionMap = Map.of( - ACTION_EXECUTION_PLUGIN_EXECUTION, List.of("plugin"), - ACTION_EXECUTION_SERVER_EXECUTION, List.of("plugin"), - ACTION_EXECUTION_DATASOURCE_CONTEXT, List.of("plugin"), - FS_STATUS, List.of(), - JGIT_STATUS, List.of(), - FS_RESET, List.of(), - JGIT_RESET_HARD, List.of(), - FS_FETCH_REMOTE, List.of(), - JGIT_FETCH_REMOTE, List.of()); + Map> seriesExceptionMap = Map.ofEntries( + Map.entry(ACTION_EXECUTION_PLUGIN_EXECUTION, List.of("plugin")), + Map.entry(ACTION_EXECUTION_SERVER_EXECUTION, List.of("plugin")), + Map.entry(ACTION_EXECUTION_DATASOURCE_CONTEXT, List.of("plugin")), + Map.entry(PLUGIN_EXECUTE_COMMON, List.of("plugin")), + Map.entry(ACTUAL_API_CALL, List.of("plugin")), + Map.entry(FS_STATUS, List.of()), + Map.entry(JGIT_STATUS, List.of()), + Map.entry(FS_RESET, List.of()), + Map.entry(JGIT_RESET_HARD, List.of()), + Map.entry(FS_FETCH_REMOTE, List.of()), + Map.entry(JGIT_FETCH_REMOTE, List.of())); @Override public Meter.Id map(Meter.Id id) {