store/tikv: use tikv.error.ErrTxnTooLarge instead of kv.ErrTxnTooLarge (#24353)

This commit is contained in:
Shirly
2021-04-29 11:39:57 +08:00
committed by GitHub
parent 4a8e671f89
commit 86b6429db9
3 changed files with 14 additions and 2 deletions

View File

@ -156,6 +156,10 @@ func toTiDBErr(err error) error {
return kv.ErrNotExist
}
if e, ok := err.(*tikverr.ErrTxnTooLarge); ok {
return kv.ErrTxnTooLarge.GenWithStackByArgs(e.Size)
}
if errors.ErrorEqual(err, tikverr.ErrCannotSetNilValue) {
return kv.ErrCannotSetNilValue
}

View File

@ -139,6 +139,15 @@ func (k *ErrRetryable) Error() string {
return k.Retryable
}
// ErrTxnTooLarge is the error when transaction is too large, lock time reached the maximum value.
type ErrTxnTooLarge struct {
Size int
}
func (e *ErrTxnTooLarge) Error() string {
return fmt.Sprintf("txn too large, size: %v.", e.Size)
}
// ErrEntryTooLarge is the error when a key value entry is too large.
type ErrEntryTooLarge struct {
Limit uint64

View File

@ -20,7 +20,6 @@ import (
"sync"
"unsafe"
tidbkv "github.com/pingcap/tidb/kv"
tikverr "github.com/pingcap/tidb/store/tikv/error"
"github.com/pingcap/tidb/store/tikv/kv"
)
@ -310,7 +309,7 @@ func (db *MemDB) set(key []byte, value []byte, ops ...kv.FlagsOp) error {
db.setValue(x, value)
if uint64(db.Size()) > db.bufferSizeLimit {
return tidbkv.ErrTxnTooLarge.GenWithStackByArgs(db.Size())
return &tikverr.ErrTxnTooLarge{Size: db.Size()}
}
return nil
}