diff --git a/kv/iter.go b/kv/iter.go index 226565b778..9ae6c6a7a5 100644 --- a/kv/iter.go +++ b/kv/iter.go @@ -31,6 +31,9 @@ var ( ErrLockConflict = errors.New("Error: Lock conflict") // ErrLazyConditionPairsNotMatch is used when value in store differs from expect pairs. ErrLazyConditionPairsNotMatch = errors.New("Error: Lazy condition pairs not match") + // ErrRetryable is used when KV store occurs RPC error or some other + // errors which SQL layer can safely retry. + ErrRetryable = errors.New("Error: KV error safe to retry") ) var ( diff --git a/kv/txn.go b/kv/txn.go index 3a0a972522..4e83a5b08a 100644 --- a/kv/txn.go +++ b/kv/txn.go @@ -25,7 +25,9 @@ func IsRetryableError(err error) bool { return false } - if terror.ErrorEqual(err, ErrLockConflict) || terror.ErrorEqual(err, ErrConditionNotMatch) { + if terror.ErrorEqual(err, ErrRetryable) || + terror.ErrorEqual(err, ErrLockConflict) || + terror.ErrorEqual(err, ErrConditionNotMatch) { return true }