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 e609a72653aa..e1d6e53e21d1 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 @@ -34,6 +34,7 @@ import com.external.utils.MySqlErrorUtils; import com.external.utils.QueryUtils; import io.r2dbc.pool.ConnectionPool; +import io.r2dbc.pool.PoolMetrics; import io.r2dbc.spi.Connection; import io.r2dbc.spi.R2dbcBadGrammarException; import io.r2dbc.spi.R2dbcException; @@ -63,18 +64,8 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; +import java.util.*; import java.util.AbstractMap.SimpleEntry; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; import java.util.concurrent.TimeoutException; import java.util.stream.IntStream; @@ -378,6 +369,21 @@ isConnectionValid && isSSHTunnelConnected(sshTunnelContext)) }); } + // Adding connection pool logs in order to debug memroy leak issue + // Refer: https://github.com/appsmithorg/appsmith/issues/34028 + Optional poolMetricsOptional = connectionPool.getMetrics(); + if (poolMetricsOptional.isPresent()) { + PoolMetrics poolMetrics = poolMetricsOptional.get(); + log.info( + "Execute query: connection Pool Metrics: Acquired {}, Pending: {}, Allocated: {}, idle: {}, Max allocations: {}, Max pending acquire: {}", + poolMetrics.acquiredSize(), + poolMetrics.pendingAcquireSize(), + poolMetrics.allocatedSize(), + poolMetrics.idleSize(), + poolMetrics.getMaxAllocatedSize(), + poolMetrics.getMaxPendingAcquireSize()); + } + return resultMono .map(res -> { ActionExecutionResult result = new ActionExecutionResult(); @@ -723,6 +729,20 @@ public Mono getStructure( .map(isConnectionValid -> isConnectionValid && isSSHTunnelConnected(sshTunnelContext)) .flatMapMany(isValid -> { + // Adding connection pool logs in order to debug memroy leak issue + // Refer: https://github.com/appsmithorg/appsmith/issues/34028 + Optional poolMetricsOptional = connectionPool.getMetrics(); + if (poolMetricsOptional.isPresent()) { + PoolMetrics poolMetrics = poolMetricsOptional.get(); + log.info( + "Get structure: connection Pool Metrics: Acquired {}, Pending: {}, Allocated: {}, idle: {}, Max allocations: {}, Max pending acquire: {}", + poolMetrics.acquiredSize(), + poolMetrics.pendingAcquireSize(), + poolMetrics.allocatedSize(), + poolMetrics.idleSize(), + poolMetrics.getMaxAllocatedSize(), + poolMetrics.getMaxPendingAcquireSize()); + } if (isValid) { return connection .createStatement(COLUMNS_QUERY)