Skip to content

Commit 6928ec2

Browse files
committed
fix: defensive null check in UndoLogManager
1 parent 457a877 commit 6928ec2

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

rm-datasource/src/main/java/org/apache/seata/rm/datasource/undo/clickhouse/ClickhouseUndoLogManager.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,19 @@ public class ClickhouseUndoLogManager extends MySQLUndoLogManager {
3939

4040
@Override
4141
public int deleteUndoLogByLogCreated(Date logCreated, int limitRows, Connection conn) throws SQLException {
42+
if (logCreated == null) {
43+
return 0;
44+
}
4245
try (PreparedStatement deletePST = conn.prepareStatement(DELETE_UNDO_LOG_BY_CREATE_SQL)) {
4346
// Clickhouse doesn't natively support LIMIT in ALTER TABLE ... DELETE easily inside prepared statements
44-
// like MySQL
45-
// so we omit the LIMIT parameter for log sweeping.
46-
deletePST.setDate(1, new java.sql.Date(logCreated.getTime()));
47+
// like MySQL so we omit the LIMIT parameter for log sweeping.
48+
if (limitRows > 0 && logger.isDebugEnabled()) {
49+
logger.debug("ClickHouse log sweeping ignores limitRows: {}", limitRows);
50+
}
51+
deletePST.setTimestamp(1, new java.sql.Timestamp(logCreated.getTime()));
4752
int deleteRows = deletePST.executeUpdate();
4853
if (logger.isDebugEnabled()) {
49-
logger.debug("batch delete undo log for clickhouse");
54+
logger.debug("batch delete undo log for clickhouse, affected rows: {}", deleteRows);
5055
}
5156
return deleteRows;
5257
} catch (Exception e) {

0 commit comments

Comments
 (0)