From 3eae3a5758c2d2d0cb5bd1fd0ad96cb6aa2f9284 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Thu, 1 Aug 2024 15:12:59 -0500 Subject: [PATCH] re-set queryStat startTimestamp to just before executeQuery, to avoid including time spent aquiring db connection --- .../module/rdbms/actions/RDBMSAggregateAction.java | 9 +++++++++ .../backend/module/rdbms/actions/RDBMSCountAction.java | 9 +++++++++ .../backend/module/rdbms/actions/RDBMSQueryAction.java | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateAction.java index b174373b..7e231765 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateAction.java @@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.io.Serializable; import java.sql.Connection; import java.sql.ResultSet; +import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -116,6 +117,14 @@ public class RDBMSAggregateAction extends AbstractRDBMSAction implements Aggrega actionTimeoutHelper = new ActionTimeoutHelper(aggregateInput.getTimeoutSeconds(), TimeUnit.SECONDS, new StatementTimeoutCanceller(statement, sql)); actionTimeoutHelper.start(); + /////////////////////////////////////////////////////////////////////////////////////////////////// + // to avoid counting time spent acquiring a connection, re-set the queryStat startTimestamp here // + /////////////////////////////////////////////////////////////////////////////////////////////////// + if(queryStat != null) + { + queryStat.setStartTimestamp(Instant.now()); + } + QueryManager.executeStatement(statement, sql, ((ResultSet resultSet) -> { ///////////////////////////////////////////////////////////////////////// diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java index a24890f1..c9f87e8a 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java @@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.io.Serializable; import java.sql.Connection; import java.sql.ResultSet; +import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -96,6 +97,14 @@ public class RDBMSCountAction extends AbstractRDBMSAction implements CountInterf actionTimeoutHelper = new ActionTimeoutHelper(countInput.getTimeoutSeconds(), TimeUnit.SECONDS, new StatementTimeoutCanceller(statement, sql)); actionTimeoutHelper.start(); + /////////////////////////////////////////////////////////////////////////////////////////////////// + // to avoid counting time spent acquiring a connection, re-set the queryStat startTimestamp here // + /////////////////////////////////////////////////////////////////////////////////////////////////// + if(queryStat != null) + { + queryStat.setStartTimestamp(Instant.now()); + } + QueryManager.executeStatement(statement, sql, ((ResultSet resultSet) -> { ///////////////////////////////////////////////////////////////////////// diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java index 5b687cd7..47305b81 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java @@ -28,6 +28,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.time.Instant; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -165,6 +166,14 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf actionTimeoutHelper = new ActionTimeoutHelper(queryInput.getTimeoutSeconds(), TimeUnit.SECONDS, new StatementTimeoutCanceller(statement, sql)); actionTimeoutHelper.start(); + /////////////////////////////////////////////////////////////////////////////////////////////////// + // to avoid counting time spent acquiring a connection, re-set the queryStat startTimestamp here // + /////////////////////////////////////////////////////////////////////////////////////////////////// + if(queryStat != null) + { + queryStat.setStartTimestamp(Instant.now()); + } + ////////////////////////////////////////////// // execute the query - iterate over results // //////////////////////////////////////////////