diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/AsyncWorker.java b/rm-datasource/src/main/java/io/seata/rm/datasource/AsyncWorker.java index f6076f88204..dd5f1baa2c3 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/AsyncWorker.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/AsyncWorker.java @@ -178,7 +178,7 @@ private void doBranchCommits() { int maxSize = xids.size() > branchIds.size() ? xids.size() : branchIds.size(); if(maxSize == UNDOLOG_DELETE_LIMIT_SIZE){ try { - UndoLogManager.batchDeleteUndoLog(xids, branchIds, UNDOLOG_DELETE_LIMIT_SIZE, conn); + UndoLogManager.batchDeleteUndoLog(xids, branchIds, conn); } catch (Exception ex) { LOGGER.warn("Failed to batch delete undo log [" + branchIds + "/" + xids + "]", ex); } @@ -192,7 +192,7 @@ private void doBranchCommits() { } try { - UndoLogManager.batchDeleteUndoLog(xids, branchIds, UNDOLOG_DELETE_LIMIT_SIZE, conn); + UndoLogManager.batchDeleteUndoLog(xids, branchIds, conn); }catch (Exception ex) { LOGGER.warn("Failed to batch delete undo log [" + branchIds + "/" + xids + "]", ex); } diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/undo/UndoLogManager.java b/rm-datasource/src/main/java/io/seata/rm/datasource/undo/UndoLogManager.java index ab278f2e71f..ae91aa1a7c3 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/undo/UndoLogManager.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/undo/UndoLogManager.java @@ -234,13 +234,12 @@ public static void undo(DataSourceProxy dataSourceProxy, String xid, long branch * * @param xids * @param branchIds - * @param limitSize * @param conn */ - public static void batchDeleteUndoLog(Set xids, Set branchIds, int limitSize, Connection conn) throws SQLException { + public static void batchDeleteUndoLog(Set xids, Set branchIds, Connection conn) throws SQLException { int xidSize = xids.size(); int branchIdSize = branchIds.size(); - String batchDeleteSql = toBatchDeleteUndoLogSql(xidSize, branchIdSize,limitSize); + String batchDeleteSql = toBatchDeleteUndoLogSql(xidSize, branchIdSize); PreparedStatement deletePST = null; try { deletePST = conn.prepareStatement(batchDeleteSql); @@ -268,15 +267,14 @@ public static void batchDeleteUndoLog(Set xids, Set branchIds, int } - protected static String toBatchDeleteUndoLogSql(int xidSize, int branchIdSize,int limitSize) { + protected static String toBatchDeleteUndoLogSql(int xidSize, int branchIdSize) { StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("DELETE FROM ") .append(UNDO_LOG_TABLE_NAME) .append(" WHERE branch_id IN "); - appendInParam(xidSize, sqlBuilder); - sqlBuilder.append(" AND xid IN "); appendInParam(branchIdSize, sqlBuilder); - sqlBuilder.append(" LIMIT ").append(limitSize); + sqlBuilder.append(" AND xid IN "); + appendInParam(xidSize, sqlBuilder); return sqlBuilder.toString(); } diff --git a/rm-datasource/src/test/java/io/seata/rm/datasource/undo/UndoLogManagerTest.java b/rm-datasource/src/test/java/io/seata/rm/datasource/undo/UndoLogManagerTest.java index dcc8f5d4ddc..e8fe5504dc9 100644 --- a/rm-datasource/src/test/java/io/seata/rm/datasource/undo/UndoLogManagerTest.java +++ b/rm-datasource/src/test/java/io/seata/rm/datasource/undo/UndoLogManagerTest.java @@ -40,9 +40,10 @@ public class UndoLogManagerTest { private static final int APPEND_IN_SIZE = 10; - private static final int LIMIT_SIZE = 10; - private static final String THE_APPEND_IN_SIZE_PARAM_String = " (?,?,?,?,?,?,?,?,?,?) "; + private static final String THE_APPEND_IN_SIZE_PARAM_STRING = " (?,?,?,?,?,?,?,?,?,?) "; + + private static final String THE_DOUBLE_APPEND_IN_SIZE_PARAM_STRING = " (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; @Test public void testBatchDeleteUndoLog() throws Exception { @@ -57,7 +58,7 @@ public void testBatchDeleteUndoLog() throws Exception { Connection connection = mock(Connection.class); PreparedStatement preparedStatement = mock(PreparedStatement.class); when(connection.prepareStatement(anyString())).thenReturn(preparedStatement); - UndoLogManager.batchDeleteUndoLog(xids, branchIds, LIMIT_SIZE, connection); + UndoLogManager.batchDeleteUndoLog(xids, branchIds, connection); //verify for (int i = 1;i <= APPEND_IN_SIZE;i++){ @@ -72,11 +73,10 @@ public void testBatchDeleteUndoLog() throws Exception { @Test public void testToBatchDeleteUndoLogSql() { String expectedSqlString="DELETE FROM undo_log WHERE branch_id IN " + - THE_APPEND_IN_SIZE_PARAM_String + + THE_APPEND_IN_SIZE_PARAM_STRING + " AND xid IN " + - THE_APPEND_IN_SIZE_PARAM_String + - " LIMIT " + LIMIT_SIZE; - String batchDeleteUndoLogSql = UndoLogManager.toBatchDeleteUndoLogSql(APPEND_IN_SIZE, APPEND_IN_SIZE, LIMIT_SIZE); + THE_DOUBLE_APPEND_IN_SIZE_PARAM_STRING; + String batchDeleteUndoLogSql = UndoLogManager.toBatchDeleteUndoLogSql(APPEND_IN_SIZE * 2, APPEND_IN_SIZE); System.out.println(batchDeleteUndoLogSql); assertThat(batchDeleteUndoLogSql).isEqualTo(expectedSqlString); } @@ -85,7 +85,7 @@ public void testToBatchDeleteUndoLogSql() { public void testAppendInParam() { StringBuilder sqlBuilder = new StringBuilder(); UndoLogManager.appendInParam(APPEND_IN_SIZE, sqlBuilder); - assertThat(sqlBuilder.toString()).isEqualTo(THE_APPEND_IN_SIZE_PARAM_String); + assertThat(sqlBuilder.toString()).isEqualTo(THE_APPEND_IN_SIZE_PARAM_STRING); } }