This is an automated email from the ASF dual-hosted git repository.

shuwenwei pushed a commit to branch fixBugs-0226
in repository https://gitbox.apache.org/repos/asf/iotdb-client-go.git

commit b13b2984075d191540a0c6745510b45874176117
Author: shuwenwei <[email protected]>
AuthorDate: Thu Feb 26 11:24:10 2026 +0800

    add tests
---
 client/sessionpool.go      |  6 ++++--
 test/e2e/e2e_table_test.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/client/sessionpool.go b/client/sessionpool.go
index a42986a..757b298 100644
--- a/client/sessionpool.go
+++ b/client/sessionpool.go
@@ -168,7 +168,7 @@ func (spool *SessionPool) PutBack(session Session) {
                        session.Close()
                }
        }()
-       if session.trans.IsOpen() {
+       if session.trans != nil && session.trans.IsOpen() {
                spool.ch <- session
        }
        <-spool.sem
@@ -177,7 +177,9 @@ func (spool *SessionPool) PutBack(session Session) {
 func (spool *SessionPool) dropSession(session Session) {
        defer func() {
                if e := recover(); e != nil {
-                       session.Close()
+                       if session.trans != nil && session.trans.IsOpen() {
+                               session.Close()
+                       }
                }
        }()
        err := session.Close()
diff --git a/test/e2e/e2e_table_test.go b/test/e2e/e2e_table_test.go
index 7f019f8..a2f814a 100644
--- a/test/e2e/e2e_table_test.go
+++ b/test/e2e/e2e_table_test.go
@@ -246,6 +246,56 @@ func (s *e2eTableTestSuite) 
Test_GetSessionFromSessionPoolWithSpecificDatabase()
        wg.Wait()
 }
 
+func (s *e2eTableTestSuite) Test_ErrInTableSessionPool() {
+       assert := s.Require()
+       poolConfig := &client.PoolConfig{
+               Host:     host,
+               Port:     port,
+               UserName: username,
+               Password: password,
+               Database: database,
+       }
+       sessionPool := client.NewTableSessionPool(poolConfig, 3, 10000, 3000, 
false)
+       defer sessionPool.Close()
+
+       session1, err := sessionPool.GetSession()
+       assert.NoError(err)
+       s.checkError(session1.ExecuteNonQueryStatement("create table 
test_timeout(tag1 string tag, tag2 string tag, s1 text field, s2 text field)"))
+
+       timeoutInMs := int64(1)
+       dataSet, err := session1.ExecuteQueryStatement("select * from 
test_timeout", &timeoutInMs)
+       if err == nil {
+               dataSet.Close()
+               return
+       }
+       err = session1.Close()
+       assert.NoError(err)
+       // test repeated close
+       err = session1.Close()
+       assert.NoError(err)
+
+       session1, err = sessionPool.GetSession()
+       assert.NoError(err)
+       defer session1.Close()
+       dataSet, err = session1.ExecuteQueryStatement("show tables", 
&timeoutInMs)
+       assert.NoError(err)
+
+       session2, err := sessionPool.GetSession()
+       assert.NoError(err)
+       defer session2.Close()
+       dataSet, err = session2.ExecuteQueryStatement("show tables", 
&timeoutInMs)
+       assert.NoError(err)
+
+       session3, err := sessionPool.GetSession()
+       assert.NoError(err)
+       defer session3.Close()
+       dataSet, err = session2.ExecuteQueryStatement("show tables", 
&timeoutInMs)
+       assert.NoError(err)
+
+       _, err = sessionPool.GetSession()
+       assert.NotNil(err)
+}
+
 func (s *e2eTableTestSuite) Test_InsertTabletAndQuery() {
        assert := s.Require()
        s.checkError(s.session.ExecuteNonQueryStatement("create table t1 (tag1 
string tag, tag2 string tag, s1 text field, s2 text field)"))

Reply via email to