From 490c9a6478f83eb7538cffb5565b116aa5b3b2c8 Mon Sep 17 00:00:00 2001 From: Yilin Chen Date: Mon, 12 Apr 2021 11:33:57 +0800 Subject: [PATCH] make it consistent with master Signed-off-by: Yilin Chen --- store/tikv/error.go | 6 ++++++ store/tikv/txn.go | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/store/tikv/error.go b/store/tikv/error.go index 33521d62c15bf..2797c8a5edee0 100644 --- a/store/tikv/error.go +++ b/store/tikv/error.go @@ -86,3 +86,9 @@ type ErrKeyExist struct { func (k *ErrKeyExist) Error() string { return k.AlreadyExist.String() } + +// IsErrKeyExist returns true if it is ErrKeyExist. +func IsErrKeyExist(err error) bool { + _, ok := errors.Cause(err).(*ErrKeyExist) + return ok +} diff --git a/store/tikv/txn.go b/store/tikv/txn.go index 74ea184755cef..b08342f1b010e 100644 --- a/store/tikv/txn.go +++ b/store/tikv/txn.go @@ -469,8 +469,7 @@ func (txn *KVTxn) LockKeys(ctx context.Context, lockCtx *kv.LockCtx, keysInput . txn.us.UnmarkPresumeKeyNotExists(key) } } - _, isErrKeyExist := errors.Cause(err).(*ErrKeyExist) - keyMayBeLocked := terror.ErrorNotEqual(kv.ErrWriteConflict, err) && !isErrKeyExist + keyMayBeLocked := terror.ErrorNotEqual(kv.ErrWriteConflict, err) && !IsErrKeyExist(err) // If there is only 1 key and lock fails, no need to do pessimistic rollback. if len(keys) > 1 || keyMayBeLocked { wg := txn.asyncPessimisticRollback(ctx, keys)