From dab188a403687e84317559ef52199a8fabfd148f Mon Sep 17 00:00:00 2001 From: fagongzi Date: Sun, 26 Jan 2025 21:37:24 +0800 Subject: [PATCH] fix leak check hung to 2.0 (#21341) fix leak check hung Approved by: @xzxiong, @sukki37 --- pkg/txn/client/leak_checker.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/pkg/txn/client/leak_checker.go b/pkg/txn/client/leak_checker.go index 6e038a0aaff14..ae8997436a600 100644 --- a/pkg/txn/client/leak_checker.go +++ b/pkg/txn/client/leak_checker.go @@ -101,25 +101,27 @@ func (lc *leakChecker) check(ctx context.Context) { } func (lc *leakChecker) doCheck() []ActiveTxn { - lc.RLock() - defer lc.RUnlock() - - var values []ActiveTxn now := time.Now() + var values []ActiveTxn + lc.RLock() for _, txn := range lc.actives { if now.Sub(txn.CreateAt) >= lc.maxActiveAges { - if txn.txnOp != nil { - txn.Options.Counter = txn.txnOp.counter() - txn.Options.InRunSql = txn.txnOp.inRunSql() - txn.Options.InCommit = txn.txnOp.inCommit() - txn.Options.InRollback = txn.txnOp.inRollback() - txn.Options.InIncrStmt = txn.txnOp.inIncrStmt() - txn.Options.InRollbackStmt = txn.txnOp.inRollbackStmt() - txn.Options.SessionInfo = txn.txnOp.opts.options.SessionInfo - } values = append(values, txn) } } + lc.RUnlock() + + for _, txn := range values { + if txn.txnOp != nil { + txn.Options.Counter = txn.txnOp.counter() + txn.Options.InRunSql = txn.txnOp.inRunSql() + txn.Options.InCommit = txn.txnOp.inCommit() + txn.Options.InRollback = txn.txnOp.inRollback() + txn.Options.InIncrStmt = txn.txnOp.inIncrStmt() + txn.Options.InRollbackStmt = txn.txnOp.inRollbackStmt() + txn.Options.SessionInfo = txn.txnOp.opts.options.SessionInfo + } + } return values }