From ce41bce9180f60363bf86ddf5e12f19b1e534958 Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Wed, 28 Oct 2020 10:44:48 +0800 Subject: [PATCH] bugfix: fix repeated commit when autocommit is false (#3040) --- .../main/java/io/seata/rm/datasource/ConnectionProxy.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/ConnectionProxy.java b/rm-datasource/src/main/java/io/seata/rm/datasource/ConnectionProxy.java index 6aa392f31..1e0d754dc 100644 --- a/rm-datasource/src/main/java/io/seata/rm/datasource/ConnectionProxy.java +++ b/rm-datasource/src/main/java/io/seata/rm/datasource/ConnectionProxy.java @@ -185,6 +185,9 @@ public class ConnectionProxy extends AbstractConnectionProxy { return null; }); } catch (SQLException e) { + if (targetConnection != null && !getAutoCommit()) { + rollback(); + } throw e; } catch (Exception e) { throw new SQLException(e); @@ -251,7 +254,7 @@ public class ConnectionProxy extends AbstractConnectionProxy { @Override public void setAutoCommit(boolean autoCommit) throws SQLException { - if (autoCommit && !getAutoCommit()) { + if ((context.inGlobalTransaction() || context.isGlobalLockRequire()) && autoCommit && !getAutoCommit()) { // change autocommit from false to true, we should commit() first according to JDBC spec. doCommit(); } -- GitLab