Skip to content

Commit

Permalink
txn, session, test: Try to stabilize testTxnStateSerialSuite.TestRunn…
Browse files Browse the repository at this point in the history
…ing and TestBlocked (#27235)
  • Loading branch information
longfangsong authored Aug 25, 2021
1 parent cfa1075 commit 44f4e11
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
6 changes: 5 additions & 1 deletion session/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -1535,7 +1535,11 @@ func (s *session) ExecuteStmt(ctx context.Context, stmtNode ast.StmtNode) (sqlex
s.txn.onStmtStart(digest.String())
defer s.txn.onStmtEnd()

failpoint.Inject("mockStmtSlow", nil)
failpoint.Inject("mockStmtSlow", func(val failpoint.Value) {
if strings.Contains(stmtNode.Text(), "/* sleep */") {
time.Sleep(time.Duration(val.(int)) * time.Millisecond)
}
})

// Transform abstract syntax tree to a physical plan(stored in executor.ExecStmt).
compiler := executor.Compiler{Ctx: s}
Expand Down
14 changes: 10 additions & 4 deletions session/session_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4486,15 +4486,18 @@ func (s *testTxnStateSerialSuite) TestRunning(c *C) {
tk.MustExec("create table t(a int);")
tk.MustExec("insert into t(a) values (1);")
tk.MustExec("begin pessimistic;")
failpoint.Enable("github.com/pingcap/tidb/session/mockStmtSlow", "sleep(100)")
c.Assert(failpoint.Enable("github.com/pingcap/tidb/session/mockStmtSlow", "return(200)"), IsNil)
ch := make(chan struct{})
go func() {
tk.MustExec("select * from t for update;")
tk.MustExec("select * from t for update /* sleep */;")
tk.MustExec("commit;")
ch <- struct{}{}
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
info := tk.Se.TxnInfo()
c.Assert(info.State, Equals, txninfo.TxnRunning)
failpoint.Disable("github.com/pingcap/tidb/session/mockStmtSlow")
c.Assert(failpoint.Disable("github.com/pingcap/tidb/session/mockStmtSlow"), IsNil)
<-ch
}

func (s *testTxnStateSerialSuite) TestBlocked(c *C) {
Expand All @@ -4504,15 +4507,18 @@ func (s *testTxnStateSerialSuite) TestBlocked(c *C) {
tk.MustExec("insert into t(a) values (1);")
tk.MustExec("begin pessimistic;")
tk.MustExec("select * from t where a = 1 for update;")
ch := make(chan struct{})
go func() {
tk2.MustExec("begin pessimistic")
tk2.MustExec("select * from t where a = 1 for update;")
tk2.MustExec("commit;")
ch <- struct{}{}
}()
time.Sleep(100 * time.Millisecond)
c.Assert(tk2.Se.TxnInfo().State, Equals, txninfo.TxnLockWaiting)
c.Assert(tk2.Se.TxnInfo().BlockStartTime, NotNil)
tk.MustExec("commit;")
<-ch
}

func (s *testTxnStateSerialSuite) TestCommitting(c *C) {
Expand Down

0 comments on commit 44f4e11

Please sign in to comment.