Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public class ActionSpanCE {

public static final String CREATE_AND_EXECUTE_QUERY_FROM_CONNECTION =
APPSMITH_SPAN_PREFIX + "createAndExecuteQueryFromConnection";

public static final String EXECUTE_QUERY = APPSMITH_SPAN_PREFIX + "executeQuery";
public static final String DESERIALIZE_RESULT = APPSMITH_SPAN_PREFIX + "deserializeResult";
public static final String ACTUAL_API_CALL = APPSMITH_SPAN_PREFIX + "actualApiCall";
public static final String TRIGGER_API_CALL = APPSMITH_SPAN_PREFIX + "triggerApiCall";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.appsmith.external.exceptions.pluginExceptions.StaleConnectionException;
import com.appsmith.external.helpers.DataTypeServiceUtils;
import com.appsmith.external.helpers.MustacheHelper;
import com.appsmith.external.helpers.ObservationHelper;
import com.appsmith.external.helpers.Stopwatch;
import com.appsmith.external.models.ActionConfiguration;
import com.appsmith.external.models.ActionExecutionRequest;
Expand All @@ -35,6 +36,7 @@
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.pool.HikariPool;
import io.micrometer.observation.ObservationRegistry;
import io.micrometer.tracing.Span;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
Expand Down Expand Up @@ -73,6 +75,8 @@

import static com.appsmith.external.constants.ActionConstants.ACTION_CONFIGURATION_BODY;
import static com.appsmith.external.constants.PluginConstants.PluginName.MSSQL_PLUGIN_NAME;
import static com.appsmith.external.constants.spans.ce.ActionSpanCE.DESERIALIZE_RESULT;
import static com.appsmith.external.constants.spans.ce.ActionSpanCE.EXECUTE_QUERY;
import static com.appsmith.external.helpers.PluginUtils.getIdenticalColumns;
import static com.appsmith.external.helpers.PluginUtils.getPSParamLabel;
import static com.appsmith.external.helpers.SmartSubstitutionHelper.replaceQuestionMarkWithDollarIndex;
Expand Down Expand Up @@ -121,10 +125,15 @@ public static class MssqlPluginExecutor implements PluginExecutor<HikariDataSour
private final ConnectionPoolConfig connectionPoolConfig;

private final ObservationRegistry observationRegistry;
private final ObservationHelper observationHelper;

public MssqlPluginExecutor(ConnectionPoolConfig connectionPoolConfig, ObservationRegistry observationRegistry) {
public MssqlPluginExecutor(
ConnectionPoolConfig connectionPoolConfig,
ObservationRegistry observationRegistry,
ObservationHelper observationHelper) {
this.connectionPoolConfig = connectionPoolConfig;
this.observationRegistry = observationRegistry;
this.observationHelper = observationHelper;
}

/**
Expand Down Expand Up @@ -269,7 +278,10 @@ public Mono<ActionExecutionResult> executeCommon(
try {
if (FALSE.equals(preparedStatement)) {
statement = sqlConnectionFromPool.createStatement();

Span exexuteQuerySpan = observationHelper.createSpan(EXECUTE_QUERY);
isResultSet = statement.execute(query);
exexuteQuerySpan.end();
resultSet = statement.getResultSet();
} else {
preparedQuery = sqlConnectionFromPool.prepareStatement(query);
Expand All @@ -290,7 +302,7 @@ public Mono<ActionExecutionResult> executeCommon(
isResultSet = preparedQuery.execute();
resultSet = preparedQuery.getResultSet();
}

Span deserializeResultSpan = observationHelper.createSpan(DESERIALIZE_RESULT);
MssqlExecuteUtils.populateRowsAndColumns(
rowsList,
columnsList,
Expand All @@ -299,7 +311,7 @@ public Mono<ActionExecutionResult> executeCommon(
preparedStatement,
statement,
preparedQuery);

deserializeResultSpan.end();
} catch (SQLException e) {
return Mono.error(new AppsmithPluginException(
MssqlPluginError.QUERY_EXECUTION_FAILED,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.external.plugins;

import com.appsmith.external.configurations.connectionpool.ConnectionPoolConfig;
import com.appsmith.external.helpers.ObservationHelper;
import com.appsmith.external.models.DBAuth;
import com.appsmith.external.models.DatasourceConfiguration;
import com.appsmith.external.models.Endpoint;
Expand Down Expand Up @@ -28,8 +29,8 @@ public Mono<Integer> getMaxConnectionPoolSize() {
}
}

static MssqlPlugin.MssqlPluginExecutor mssqlPluginExecutor =
new MssqlPlugin.MssqlPluginExecutor(new MockConnectionPoolConfig(), ObservationRegistry.NOOP);
static MssqlPlugin.MssqlPluginExecutor mssqlPluginExecutor = new MssqlPlugin.MssqlPluginExecutor(
new MockConnectionPoolConfig(), ObservationRegistry.NOOP, ObservationHelper.NOOP);

public static MssqlDatasourceUtils mssqlDatasourceUtils = new MssqlDatasourceUtils();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@
import com.appsmith.external.exceptions.pluginExceptions.AppsmithPluginError;
import com.appsmith.external.exceptions.pluginExceptions.AppsmithPluginException;
import com.appsmith.external.exceptions.pluginExceptions.StaleConnectionException;
import com.appsmith.external.helpers.DataTypeServiceUtils;
import com.appsmith.external.helpers.MustacheHelper;
import com.appsmith.external.helpers.SSHUtils;
import com.appsmith.external.helpers.Stopwatch;
import com.appsmith.external.helpers.*;
import com.appsmith.external.models.ActionConfiguration;
import com.appsmith.external.models.ActionExecutionRequest;
import com.appsmith.external.models.ActionExecutionResult;
Expand Down Expand Up @@ -42,6 +39,7 @@
import com.zaxxer.hikari.pool.HikariPool.PoolInitializationException;
import com.zaxxer.hikari.pool.HikariProxyConnection;
import io.micrometer.observation.ObservationRegistry;
import io.micrometer.tracing.Span;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.ObjectUtils;
Expand Down Expand Up @@ -93,7 +91,7 @@
import static com.appsmith.external.constants.ActionConstants.ACTION_CONFIGURATION_BODY;
import static com.appsmith.external.constants.PluginConstants.HostName.LOCALHOST;
import static com.appsmith.external.constants.PluginConstants.PluginName.POSTGRES_PLUGIN_NAME;
import static com.appsmith.external.constants.spans.ce.ActionSpanCE.PLUGIN_EXECUTE_COMMON;
import static com.appsmith.external.constants.spans.ce.ActionSpanCE.*;
import static com.appsmith.external.exceptions.pluginExceptions.BasePluginErrorMessages.DS_INVALID_SSH_HOSTNAME_ERROR_MSG;
import static com.appsmith.external.exceptions.pluginExceptions.BasePluginErrorMessages.DS_MISSING_SSH_HOSTNAME_ERROR_MSG;
import static com.appsmith.external.exceptions.pluginExceptions.BasePluginErrorMessages.DS_MISSING_SSH_KEY_ERROR_MSG;
Expand Down Expand Up @@ -161,6 +159,7 @@ public PostgresPlugin(PluginWrapper wrapper) {

@Extension
public static class PostgresPluginExecutor implements SmartSubstitutionInterface, PluginExecutor<HikariDataSource> {

private final Scheduler scheduler = Schedulers.boundedElastic();

private static final String TABLES_QUERY =
Expand Down Expand Up @@ -209,15 +208,18 @@ public static class PostgresPluginExecutor implements SmartSubstitutionInterface
private final SharedConfig sharedConfig;
private final ConnectionPoolConfig connectionPoolConfig;
private final ObservationRegistry observationRegistry;
private final ObservationHelper observationHelper;

public PostgresPluginExecutor(
SharedConfig sharedConfig,
ConnectionPoolConfig connectionPoolConfig,
ObservationRegistry observationRegistry) {
ObservationRegistry observationRegistry,
ObservationHelper observationHelper) {
this.sharedConfig = sharedConfig;
this.connectionPoolConfig = connectionPoolConfig;
MAX_SIZE_SUPPORTED = sharedConfig.getMaxResponseSize();
this.observationRegistry = observationRegistry;
this.observationHelper = observationHelper;
}

/**
Expand Down Expand Up @@ -435,7 +437,11 @@ private Mono<ActionExecutionResult> executeCommon(
parameters.get(i).getValue())));

requestData.put("ps-parameters", parameters);
Span executeQuerySpan = observationHelper.createSpan(EXECUTE_QUERY);

isResultSet = preparedQuery.execute();
executeQuerySpan.end();

resultSet = preparedQuery.getResultSet();
}

Expand All @@ -454,6 +460,8 @@ private Mono<ActionExecutionResult> executeCommon(
columnsList.addAll(getColumnsListForJdbcPlugin(metaData));

int iterator = 0;
Span deserializeResultSpan = observationHelper.createSpan(DESERIALIZE_RESULT);

while (resultSet.next()) {

// Only check the data size at low frequency to ensure the performance is not
Expand Down Expand Up @@ -539,6 +547,7 @@ private Mono<ActionExecutionResult> executeCommon(

iterator++;
}
deserializeResultSpan.end();
}

} catch (SQLException e) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.external.plugins;

import com.appsmith.external.configurations.connectionpool.ConnectionPoolConfig;
import com.appsmith.external.helpers.ObservationHelper;
import com.appsmith.external.models.Connection;
import com.appsmith.external.models.DBAuth;
import com.appsmith.external.models.DatasourceConfiguration;
Expand Down Expand Up @@ -31,7 +32,7 @@ public class PostgresDatasourceValidationTest {
static SharedConfig mockSharedConfig = mock(SharedConfig.class);
static ConnectionPoolConfig mockConnectionPoolConfig = mock(ConnectionPoolConfig.class);
static PostgresPlugin.PostgresPluginExecutor pluginExecutor = new PostgresPlugin.PostgresPluginExecutor(
mockSharedConfig, mockConnectionPoolConfig, ObservationRegistry.NOOP);
mockSharedConfig, mockConnectionPoolConfig, ObservationRegistry.NOOP, ObservationHelper.NOOP);

private DatasourceConfiguration getDatasourceConfigurationWithStandardConnectionMethod() {
DatasourceConfiguration datasourceConfiguration = new DatasourceConfiguration();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.appsmith.external.dtos.ExecuteActionDTO;
import com.appsmith.external.exceptions.pluginExceptions.AppsmithPluginException;
import com.appsmith.external.exceptions.pluginExceptions.StaleConnectionException;
import com.appsmith.external.helpers.ObservationHelper;
import com.appsmith.external.models.ActionConfiguration;
import com.appsmith.external.models.ActionExecutionRequest;
import com.appsmith.external.models.ActionExecutionResult;
Expand Down Expand Up @@ -90,7 +91,7 @@ public Mono<Integer> getMaxConnectionPoolSize() {
}

PostgresPlugin.PostgresPluginExecutor pluginExecutor = new PostgresPlugin.PostgresPluginExecutor(
new MockSharedConfig(), new MockConnectionPoolConfig(), ObservationRegistry.NOOP);
new MockSharedConfig(), new MockConnectionPoolConfig(), ObservationRegistry.NOOP, ObservationHelper.NOOP);

@SuppressWarnings("rawtypes") // The type parameter for the container type is just itself and is pseudo-optional.
@Container
Expand Down
Loading