Skip to content

Commit

Permalink
*: refine some error code (#14002)
Browse files Browse the repository at this point in the history
  • Loading branch information
tiancaiamao authored and sre-bot committed Dec 12, 2019
1 parent 4333424 commit 5da10ff
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 44 deletions.
2 changes: 0 additions & 2 deletions domain/domain.go
Expand Up @@ -815,8 +815,6 @@ func (do *Domain) LoadPrivilegeLoop(ctx sessionctx.Context) error {
metrics.LoadPrivilegeCounter.WithLabelValues(metrics.RetLabel(err)).Inc()
if err != nil {
logutil.BgLogger().Error("load privilege failed", zap.Error(err))
} else {
logutil.BgLogger().Debug("reload privilege success")
}
}
}()
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Expand Up @@ -37,7 +37,7 @@ require (
github.com/pingcap/goleveldb v0.0.0-20171020122428-b9ff6c35079e
github.com/pingcap/kvproto v0.0.0-20191202044712-32be31591b03
github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9
github.com/pingcap/parser v0.0.0-20191210055545-753e13bfdbf0
github.com/pingcap/parser v0.0.0-20191210060830-bdf23a7ade01
github.com/pingcap/pd v1.1.0-beta.0.20191210055626-676ddd3fbd2d
github.com/pingcap/sysutil v0.0.0-20191126040022-986c5b3ed9a3
github.com/pingcap/tidb-tools v3.0.6-0.20191106033616-90632dda3863+incompatible
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Expand Up @@ -190,8 +190,8 @@ github.com/pingcap/kvproto v0.0.0-20191202044712-32be31591b03/go.mod h1:WWLmULLO
github.com/pingcap/log v0.0.0-20190715063458-479153f07ebd/go.mod h1:WpHUKhNZ18v116SvGrmjkA9CBhYmuUTKL+p8JC9ANEw=
github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9 h1:AJD9pZYm72vMgPcQDww9rkZ1DnWfl0pXV3BOWlkYIjA=
github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8=
github.com/pingcap/parser v0.0.0-20191210055545-753e13bfdbf0 h1:BmayUSQpOj05pzVprTZ9HCoarUlap4gYNjlHijNxx8w=
github.com/pingcap/parser v0.0.0-20191210055545-753e13bfdbf0/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA=
github.com/pingcap/parser v0.0.0-20191210060830-bdf23a7ade01 h1:q1rGnV/296//bArDP7cDWWaSrhaeEKZY+gIo+Jb0Gyk=
github.com/pingcap/parser v0.0.0-20191210060830-bdf23a7ade01/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA=
github.com/pingcap/pd v1.1.0-beta.0.20191210055626-676ddd3fbd2d h1:0uUwCayeh1U4r1n7kb4gHf2ZbiI9fuVtXPCEpb2piBY=
github.com/pingcap/pd v1.1.0-beta.0.20191210055626-676ddd3fbd2d/go.mod h1:Z/VMtXHpkOP+MnYnk4TL5VHc3ZwO1qHwc89zDuf5n8Q=
github.com/pingcap/sysutil v0.0.0-20191126040022-986c5b3ed9a3 h1:HCNif3lukL83gNC2EBAoh2Qbz36+2p0bm0LjgnNfl1s=
Expand Down
6 changes: 0 additions & 6 deletions meta/autoid/autoid.go
Expand Up @@ -22,7 +22,6 @@ import (
"github.com/cznic/mathutil"
"github.com/pingcap/errors"
"github.com/pingcap/failpoint"
"github.com/pingcap/parser/terror"
"github.com/pingcap/tidb/kv"
"github.com/pingcap/tidb/meta"
"github.com/pingcap/tidb/metrics"
Expand Down Expand Up @@ -52,8 +51,6 @@ const (
// Test needs to change it, so it's a variable.
var step = int64(30000)

var errInvalidTableID = terror.ClassAutoid.New(codeInvalidTableID, "invalid TableID")

// Allocator is an auto increment id generator.
// Just keep id unique actually.
type Allocator interface {
Expand Down Expand Up @@ -262,9 +259,6 @@ func NewAllocator(store kv.Storage, dbID int64, isUnsigned bool) Allocator {
}
}

// codeInvalidTableID is the code of autoid error.
const codeInvalidTableID terror.ErrCode = 1

// Alloc implements autoid.Allocator Alloc interface.
func (alloc *allocator) Alloc(tableID int64, n uint64) (int64, int64, error) {
if tableID == 0 {
Expand Down
2 changes: 2 additions & 0 deletions meta/autoid/errors.go
Expand Up @@ -20,6 +20,7 @@ import (

// Error instances.
var (
errInvalidTableID = terror.ClassAutoid.New(mysql.ErrInvalidTableID, mysql.MySQLErrName[mysql.ErrInvalidTableID])
ErrAutoincReadFailed = terror.ClassAutoid.New(mysql.ErrAutoincReadFailed, mysql.MySQLErrName[mysql.ErrAutoincReadFailed])
ErrWrongAutoKey = terror.ClassAutoid.New(mysql.ErrWrongAutoKey, mysql.MySQLErrName[mysql.ErrWrongAutoKey])
)
Expand All @@ -29,6 +30,7 @@ func init() {
tableMySQLErrCodes := map[terror.ErrCode]uint16{
mysql.ErrAutoincReadFailed: mysql.ErrAutoincReadFailed,
mysql.ErrWrongAutoKey: mysql.ErrWrongAutoKey,
mysql.ErrInvalidTableID: mysql.ErrInvalidTableID,
}
terror.ErrClassToMySQLCodes[terror.ClassAutoid] = tableMySQLErrCodes
}
35 changes: 21 additions & 14 deletions privilege/privileges/cache.go
Expand Up @@ -29,9 +29,10 @@ import (
"github.com/pingcap/tidb/sessionctx"
"github.com/pingcap/tidb/types"
"github.com/pingcap/tidb/util/chunk"
"github.com/pingcap/tidb/util/logutil"
"github.com/pingcap/tidb/util/sqlexec"
"github.com/pingcap/tidb/util/stringutil"
log "github.com/sirupsen/logrus"
"go.uber.org/zap"
)

var (
Expand Down Expand Up @@ -199,47 +200,53 @@ func (p *MySQLPrivilege) FindRole(user string, host string, role *auth.RoleIdent
func (p *MySQLPrivilege) LoadAll(ctx sessionctx.Context) error {
err := p.LoadUserTable(ctx)
if err != nil {
return errors.Trace(err)
logutil.BgLogger().Warn("load mysql.user fail", zap.Error(err))
return errLoadPrivilege.FastGen("mysql.user")
}

err = p.LoadDBTable(ctx)
if err != nil {
if !noSuchTable(err) {
return errors.Trace(err)
logutil.BgLogger().Warn("load mysql.db fail", zap.Error(err))
return errLoadPrivilege.FastGen("mysql.db")
}
log.Warn("mysql.db maybe missing")
logutil.BgLogger().Warn("mysql.db maybe missing")
}

err = p.LoadTablesPrivTable(ctx)
if err != nil {
if !noSuchTable(err) {
return errors.Trace(err)
logutil.BgLogger().Warn("load mysql.tables_priv fail", zap.Error(err))
return errLoadPrivilege.FastGen("mysql.tables_priv")
}
log.Warn("mysql.tables_priv missing")
logutil.BgLogger().Warn("mysql.tables_priv missing")
}

err = p.LoadDefaultRoles(ctx)
if err != nil {
if !noSuchTable(err) {
return errors.Trace(err)
logutil.BgLogger().Warn("load mysql.roles", zap.Error(err))
return errLoadPrivilege.FastGen("mysql.roles")
}
log.Warn("mysql.default_roles missing")
logutil.BgLogger().Warn("mysql.default_roles missing")
}

err = p.LoadColumnsPrivTable(ctx)
if err != nil {
if !noSuchTable(err) {
return errors.Trace(err)
logutil.BgLogger().Warn("load mysql.columns_priv", zap.Error(err))
return errLoadPrivilege.FastGen("mysql.columns_priv")
}
log.Warn("mysql.columns_priv missing")
logutil.BgLogger().Warn("mysql.columns_priv missing")
}

err = p.LoadRoleGraph(ctx)
if err != nil {
if !noSuchTable(err) {
return errors.Trace(err)
logutil.BgLogger().Warn("load mysql.role_edges", zap.Error(err))
return errLoadPrivilege.FastGen("mysql.role_edges")
}
log.Warn("mysql.role_edges missing")
logutil.BgLogger().Warn("mysql.role_edges missing")
}
return nil
}
Expand Down Expand Up @@ -616,7 +623,7 @@ func decodeSetToPrivilege(s types.Set) mysql.PrivilegeType {
for _, str := range strings.Split(s.Name, ",") {
priv, ok := mysql.SetStr2Priv[str]
if !ok {
log.Warn("unsupported privilege type:", str)
logutil.BgLogger().Warn("unsupported privilege", zap.String("type", str))
continue
}
ret |= priv
Expand Down Expand Up @@ -1112,7 +1119,7 @@ func (h *Handle) Update(ctx sessionctx.Context) error {
var priv MySQLPrivilege
err := priv.LoadAll(ctx)
if err != nil {
return errors.Trace(err)
return err
}

h.priv.Store(&priv)
Expand Down
12 changes: 5 additions & 7 deletions privilege/privileges/errors.go
Expand Up @@ -18,19 +18,17 @@ import (
"github.com/pingcap/parser/terror"
)

// privilege error codes.
const (
codeInvalidPrivilegeType terror.ErrCode = 1
)

var (
errInvalidPrivilegeType = terror.ClassPrivilege.New(codeInvalidPrivilegeType, "unknown privilege type %s")
errInvalidPrivilegeType = terror.ClassPrivilege.New(mysql.ErrInvalidPrivilegeType, mysql.MySQLErrName[mysql.ErrInvalidPrivilegeType])
errNonexistingGrant = terror.ClassPrivilege.New(mysql.ErrNonexistingGrant, mysql.MySQLErrName[mysql.ErrNonexistingGrant])
errLoadPrivilege = terror.ClassPrivilege.New(mysql.ErrLoadPrivilege, mysql.MySQLErrName[mysql.ErrLoadPrivilege])
)

func init() {
privilegeMySQLErrCodes := map[terror.ErrCode]uint16{
mysql.ErrNonexistingGrant: mysql.ErrNonexistingGrant,
mysql.ErrNonexistingGrant: mysql.ErrNonexistingGrant,
mysql.ErrLoadPrivilege: mysql.ErrLoadPrivilege,
mysql.ErrInvalidPrivilegeType: mysql.ErrInvalidPrivilegeType,
}
terror.ErrClassToMySQLCodes[terror.ClassPrivilege] = privilegeMySQLErrCodes
}
9 changes: 6 additions & 3 deletions server/server.go
Expand Up @@ -86,9 +86,9 @@ func init() {
}

var (
errUnknownFieldType = terror.ClassServer.New(codeUnknownFieldType, "unknown field type")
errInvalidSequence = terror.ClassServer.New(codeInvalidSequence, "invalid sequence")
errInvalidType = terror.ClassServer.New(codeInvalidType, "invalid type")
errUnknownFieldType = terror.ClassServer.New(mysql.ErrUnknownFieldType, mysql.MySQLErrName[mysql.ErrUnknownFieldType])
errInvalidSequence = terror.ClassServer.New(mysql.ErrInvalidSequence, mysql.MySQLErrName[mysql.ErrInvalidSequence])
errInvalidType = terror.ClassServer.New(mysql.ErrInvalidType, mysql.MySQLErrName[mysql.ErrInvalidType])
errNotAllowedCommand = terror.ClassServer.New(mysql.ErrNotAllowedCommand, mysql.MySQLErrName[mysql.ErrNotAllowedCommand])
errAccessDenied = terror.ClassServer.New(mysql.ErrAccessDenied, mysql.MySQLErrName[mysql.ErrAccessDenied])
)
Expand Down Expand Up @@ -647,6 +647,9 @@ func init() {
serverMySQLErrCodes := map[terror.ErrCode]uint16{
mysql.ErrNotAllowedCommand: mysql.ErrNotAllowedCommand,
mysql.ErrAccessDenied: mysql.ErrAccessDenied,
mysql.ErrUnknownFieldType: mysql.ErrUnknownFieldType,
mysql.ErrInvalidSequence: mysql.ErrInvalidSequence,
mysql.ErrInvalidType: mysql.ErrInvalidType,
}
terror.ErrClassToMySQLCodes[terror.ClassServer] = serverMySQLErrCodes
}
12 changes: 3 additions & 9 deletions sessionctx/variable/session.go
Expand Up @@ -44,19 +44,13 @@ import (
"github.com/pingcap/tidb/util/timeutil"
)

const (
codeCantGetValidID terror.ErrCode = 1
codeCantSetToNull terror.ErrCode = 2
codeSnapshotTooOld terror.ErrCode = 3
)

var preparedStmtCount int64

// Error instances.
var (
errCantGetValidID = terror.ClassVariable.New(codeCantGetValidID, "cannot get valid auto-increment id in retry")
ErrCantSetToNull = terror.ClassVariable.New(codeCantSetToNull, "cannot set variable to null")
ErrSnapshotTooOld = terror.ClassVariable.New(codeSnapshotTooOld, "snapshot is older than GC safe point %s")
errCantGetValidID = terror.ClassVariable.New(mysql.ErrCantGetValidID, mysql.MySQLErrName[mysql.ErrCantGetValidID])
ErrCantSetToNull = terror.ClassVariable.New(mysql.ErrCantSetToNull, mysql.MySQLErrName[mysql.ErrCantSetToNull])
ErrSnapshotTooOld = terror.ClassVariable.New(mysql.ErrSnapshotTooOld, mysql.MySQLErrName[mysql.ErrSnapshotTooOld])
)

// RetryInfo saves retry information.
Expand Down
3 changes: 3 additions & 0 deletions sessionctx/variable/sysvar.go
Expand Up @@ -84,6 +84,9 @@ func init() {

// Register terror to mysql error map.
mySQLErrCodes := map[terror.ErrCode]uint16{
mysql.ErrCantGetValidID: mysql.ErrCantGetValidID,
mysql.ErrCantSetToNull: mysql.ErrCantSetToNull,
mysql.ErrSnapshotTooOld: mysql.ErrSnapshotTooOld,
mysql.ErrUnsupportedValueForVar: mysql.ErrUnsupportedValueForVar,
mysql.ErrUnknownSystemVariable: mysql.ErrUnknownSystemVariable,
mysql.ErrIncorrectGlobalLocalVar: mysql.ErrIncorrectGlobalLocalVar,
Expand Down

0 comments on commit 5da10ff

Please sign in to comment.