@@ -23,6 +23,7 @@ import (
23
23
. "github.com/pingcap/check"
24
24
"github.com/pingcap/errors"
25
25
"github.com/pingcap/kvproto/pkg/kvrpcpb"
26
+ "github.com/pingcap/tidb/config"
26
27
"github.com/pingcap/tidb/kv"
27
28
"github.com/pingcap/tidb/store/mockstore/mocktikv"
28
29
"github.com/pingcap/tidb/store/tikv/tikvrpc"
@@ -38,6 +39,7 @@ var _ = Suite(&testCommitterSuite{})
38
39
39
40
func (s * testCommitterSuite ) SetUpTest (c * C ) {
40
41
s .cluster = mocktikv .NewCluster ()
42
+ PessimisticLockTTL = uint64 (config .MinPessimisticTTL / time .Millisecond )
41
43
mocktikv .BootstrapWithMultiRegions (s .cluster , []byte ("a" ), []byte ("b" ), []byte ("c" ))
42
44
mvccStore , err := mocktikv .NewMVCCLevelDB ("" )
43
45
c .Assert (err , IsNil )
@@ -468,3 +470,18 @@ func (s *testCommitterSuite) TestPessimisticLockedKeysDedup(c *C) {
468
470
c .Assert (err , IsNil )
469
471
c .Assert (txn .lockKeys , HasLen , 2 )
470
472
}
473
+
474
+ func (s * testCommitterSuite ) TestPessimistOptimisticConflict (c * C ) {
475
+ txnPes := s .begin (c )
476
+ txnPes .SetOption (kv .Pessimistic , true )
477
+ err := txnPes .LockKeys (context .Background (), txnPes .startTS , kv .Key ("pes" ))
478
+ c .Assert (err , IsNil )
479
+ c .Assert (txnPes .IsPessimistic (), IsTrue )
480
+ c .Assert (txnPes .lockKeys , HasLen , 1 )
481
+ txnOpt := s .begin (c )
482
+ err = txnOpt .Set (kv .Key ("pes" ), []byte ("v" ))
483
+ c .Assert (err , IsNil )
484
+ err = txnOpt .Commit (context .Background ())
485
+ c .Assert (kv .ErrWriteConflict .Equal (err ), IsTrue )
486
+ c .Assert (txnPes .Commit (context .Background ()), IsNil )
487
+ }
0 commit comments