store/tikv: use tikv.error.ErrTxnTooLarge instead of kv.ErrTxnTooLarge (#24353)
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user