This is an automated email from the ASF dual-hosted git repository.
Ethan-Xingyue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git
The following commit(s) were added to refs/heads/master by this push:
new 3bf73586 fix: correct XA connection hold fallback (#1150)
3bf73586 is described below
commit 3bf73586af81db1bd428982c93d82000d80cb1c8
Author: xiaobaicai66695 <[email protected]>
AuthorDate: Wed Sep 2 16:34:05 2026 +0800
fix: correct XA connection hold fallback (#1150)
Co-authored-by: Ethan <[email protected]>
---
pkg/datasource/sql/conn_xa.go | 2 +-
pkg/datasource/sql/conn_xa_test.go | 40 ++++++++++++++++++++++++++++++++++++++
2 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/pkg/datasource/sql/conn_xa.go b/pkg/datasource/sql/conn_xa.go
index 71c98235..438f3523 100644
--- a/pkg/datasource/sql/conn_xa.go
+++ b/pkg/datasource/sql/conn_xa.go
@@ -579,7 +579,7 @@ func (c *XAConn) commitErrorHandle(ctx context.Context)
error {
}
func (c *XAConn) ShouldBeHeld() bool {
- return c.res.IsShouldBeHeld() || (c.res.GetDbType().String() != "" &&
c.res.GetDbType() != types.DBTypeUnknown)
+ return c.res.IsShouldBeHeld() || c.res.GetDbType() ==
types.DBTypeUnknown
}
func (c *XAConn) checkTimeout(ctx context.Context, now time.Time) error {
diff --git a/pkg/datasource/sql/conn_xa_test.go
b/pkg/datasource/sql/conn_xa_test.go
index 4174b5a0..86595edc 100644
--- a/pkg/datasource/sql/conn_xa_test.go
+++ b/pkg/datasource/sql/conn_xa_test.go
@@ -261,6 +261,46 @@ func newMockXAConn(t *testing.T, ctrl *gomock.Controller,
branchID int64) (*XACo
}, mockMgr
}
+func TestXAConn_ShouldBeHeld(t *testing.T) {
+ tests := []struct {
+ name string
+ dbType types.DBType
+ resourceHold bool
+ want bool
+ }{
+ {
+ name: "resource requires owner connection",
+ dbType: types.DBTypeMySQL,
+ resourceHold: true,
+ want: true,
+ },
+ {
+ name: "known database supports detached phase
two",
+ dbType: types.DBTypePostgreSQL,
+ resourceHold: false,
+ want: false,
+ },
+ {
+ name: "unknown database falls back to retaining
connection",
+ dbType: types.DBTypeUnknown,
+ resourceHold: false,
+ want: true,
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ resource := &DBResource{
+ dbType: tt.dbType,
+ shouldBeHeld: tt.resourceHold,
+ }
+ conn := &XAConn{Conn: &Conn{res: resource}}
+
+ assert.Equal(t, tt.want, conn.ShouldBeHeld())
+ })
+ }
+}
+
func TestXAConn_ExecContext(t *testing.T) {
ctrl, db, mi, ti := initXAConnTestResource(t)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]