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)"))
