From 90a98ceaaffe27744e24c948153de1f322a552f9 Mon Sep 17 00:00:00 2001 From: Yilin Chen Date: Thu, 21 Jan 2021 21:38:29 +0800 Subject: [PATCH] store/tikv: set short pessimistic lock TTL through failpoints (#22431) Signed-off-by: Yilin Chen --- store/tikv/pessimistic.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/store/tikv/pessimistic.go b/store/tikv/pessimistic.go index 1c51a43d2e..65544f9e80 100644 --- a/store/tikv/pessimistic.go +++ b/store/tikv/pessimistic.go @@ -14,6 +14,7 @@ package tikv import ( + "encoding/hex" "math/rand" "strings" "sync/atomic" @@ -73,12 +74,22 @@ func (action actionPessimisticLock) handleSingleBatch(c *twoPhaseCommitter, bo * mutations[i] = mut } elapsed := uint64(time.Since(c.txn.startTime) / time.Millisecond) + ttl := elapsed + atomic.LoadUint64(&ManagedLockTTL) + failpoint.Inject("shortPessimisticLockTTL", func() { + ttl = 1 + keys := make([]string, 0, len(mutations)) + for _, m := range mutations { + keys = append(keys, hex.EncodeToString(m.Key)) + } + logutil.BgLogger().Info("[failpoint] injected lock ttl = 1 on pessimistic lock", + zap.Uint64("txnStartTS", c.startTS), zap.Strings("keys", keys)) + }) req := tikvrpc.NewRequest(tikvrpc.CmdPessimisticLock, &pb.PessimisticLockRequest{ Mutations: mutations, PrimaryLock: c.primary(), StartVersion: c.startTS, ForUpdateTs: c.forUpdateTS, - LockTtl: elapsed + atomic.LoadUint64(&ManagedLockTTL), + LockTtl: ttl, IsFirstLock: c.isFirstLock, WaitTimeout: action.LockWaitTime, ReturnValues: action.ReturnValues,