From bce9af06fbb80012be1a5b57f24a625e4000d425 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 8 Jul 2024 10:20:45 -0500 Subject: [PATCH] Move logSQL calls into finally blocks, to happen upon success or exception. --- .../rdbms/actions/RDBMSAggregateAction.java | 6 +++-- .../rdbms/actions/RDBMSCountAction.java | 8 +++--- .../rdbms/actions/RDBMSDeleteAction.java | 24 +++++++++++------ .../rdbms/actions/RDBMSInsertAction.java | 17 +++++++----- .../rdbms/actions/RDBMSQueryAction.java | 9 ++----- .../rdbms/actions/RDBMSUpdateAction.java | 26 +++++++++++++------ 6 files changed, 56 insertions(+), 34 deletions(-) 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 0f4e7400..b174373b 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 @@ -168,8 +168,10 @@ public class RDBMSAggregateAction extends AbstractRDBMSAction implements Aggrega }), params); } - - logSQL(sql, params, mark); + finally + { + logSQL(sql, params, mark); + } return rs; } 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 f2e40953..a24890f1 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 @@ -84,10 +84,10 @@ public class RDBMSCountAction extends AbstractRDBMSAction implements CountInterf setSqlAndJoinsInQueryStat(sql, joinsContext); CountOutput rs = new CountOutput(); + long mark = System.currentTimeMillis(); + try(Connection connection = getConnection(countInput)) { - long mark = System.currentTimeMillis(); - statement = connection.prepareStatement(sql); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -116,7 +116,9 @@ public class RDBMSCountAction extends AbstractRDBMSAction implements CountInterf setQueryStatFirstResultTime(); }), params); - + } + finally + { logSQL(sql, params, mark); } diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java index dd9cf209..5d4cddf8 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java @@ -212,13 +212,16 @@ public class RDBMSDeleteAction extends AbstractRDBMSAction implements DeleteInte // LOG.debug("rowCount 0 trying to delete [" + tableName + "][" + primaryKey + "]"); // deleteOutput.addRecordWithError(new QRecord(table, primaryKey).withError("Record was not deleted (but no error was given from the database)")); // } - logSQL(sql, List.of(primaryKey), mark); } catch(Exception e) { LOG.debug("Exception trying to delete [" + tableName + "][" + primaryKey + "]", e); deleteOutput.addRecordWithError(new QRecord(table, primaryKey).withError(new SystemErrorStatusMessage("Record was not deleted: " + e.getMessage()))); } + finally + { + logSQL(sql, List.of(primaryKey), mark); + } } @@ -228,13 +231,14 @@ public class RDBMSDeleteAction extends AbstractRDBMSAction implements DeleteInte *******************************************************************************/ public void doDeleteList(Connection connection, QTableMetaData table, List primaryKeys, DeleteOutput deleteOutput) throws QException { + long mark = System.currentTimeMillis(); + String sql = null; + try { - long mark = System.currentTimeMillis(); - String tableName = getTableName(table); String primaryKeyName = getColumnName(table.getField(table.getPrimaryKeyField())); - String sql = "DELETE FROM " + sql = "DELETE FROM " + escapeIdentifier(tableName) + " WHERE " + escapeIdentifier(primaryKeyName) @@ -246,13 +250,15 @@ public class RDBMSDeleteAction extends AbstractRDBMSAction implements DeleteInte Integer rowCount = QueryManager.executeUpdateForRowCount(connection, sql, primaryKeys); deleteOutput.addToDeletedRecordCount(rowCount); - - logSQL(sql, primaryKeys, mark); } catch(Exception e) { throw new QException("Error executing delete: " + e.getMessage(), e); } + finally + { + logSQL(sql, primaryKeys, mark); + } } @@ -282,12 +288,14 @@ public class RDBMSDeleteAction extends AbstractRDBMSAction implements DeleteInte { int rowCount = QueryManager.executeUpdateForRowCount(connection, sql, params); deleteOutput.setDeletedRecordCount(rowCount); - - logSQL(sql, params, mark); } catch(Exception e) { throw new QException("Error executing delete with filter: " + e.getMessage(), e); } + finally + { + logSQL(sql, params, mark); + } } } diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java index 101d96f4..b58d1386 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java @@ -57,9 +57,13 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte InsertOutput rs = new InsertOutput(); QTableMetaData table = insertInput.getTable(); - Connection connection = null; + Connection connection = null; boolean needToCloseConnection = false; + StringBuilder sql = null; + List params = null; + Long mark = null; + try { List insertableFields = table.getFields().values().stream() @@ -88,10 +92,10 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte for(List page : CollectionUtils.getPages(insertInput.getRecords(), QueryManager.PAGE_SIZE)) { - String tableName = escapeIdentifier(getTableName(table)); - StringBuilder sql = new StringBuilder("INSERT INTO ").append(tableName).append("(").append(columns).append(") VALUES"); - List params = new ArrayList<>(); - int recordIndex = 0; + String tableName = escapeIdentifier(getTableName(table)); + sql = new StringBuilder("INSERT INTO ").append(tableName).append("(").append(columns).append(") VALUES"); + params = new ArrayList<>(); + int recordIndex = 0; ////////////////////////////////////////////////////// // for each record in the page: // @@ -133,7 +137,7 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte continue; } - Long mark = System.currentTimeMillis(); + mark = System.currentTimeMillis(); /////////////////////////////////////////////////////////// // execute the insert, then foreach record in the input, // @@ -163,6 +167,7 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte } catch(Exception e) { + logSQL(sql, params, mark); throw new QException("Error executing insert: " + e.getMessage(), e); } finally 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 fc178fed..2f3ab9e0 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 @@ -223,17 +223,12 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf }), params); - logSQL(sql, params, mark); - return queryOutput; } - catch(Exception e) - { - logSQL(sql, params, mark); - throw (e); - } finally { + logSQL(sql, params, mark); + if(actionTimeoutHelper != null) { ///////////////////////////////////////// diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java index 54276782..627b9c60 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java @@ -179,10 +179,15 @@ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInte //////////////////////////////////////////////////////////////////////////////// // let query manager do the batch updates - note that it will internally page // //////////////////////////////////////////////////////////////////////////////// - QueryManager.executeBatchUpdate(connection, sql, values); - incrementStatus(updateInput, recordList.size()); - - logSQL(sql, values, mark); + try + { + QueryManager.executeBatchUpdate(connection, sql, values); + incrementStatus(updateInput, recordList.size()); + } + finally + { + logSQL(sql, values, mark); + } } @@ -249,10 +254,15 @@ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInte ///////////////////////////////////// // let query manager do the update // ///////////////////////////////////// - QueryManager.executeUpdate(connection, sql, params); - incrementStatus(updateInput, page.size()); - - logSQL(sql, params, mark); + try + { + QueryManager.executeUpdate(connection, sql, params); + incrementStatus(updateInput, page.size()); + } + finally + { + logSQL(sql, params, mark); + } } }