本文整理汇总了Golang中github.com/juju/errors.Errorf函数的典型用法代码示例。如果您正苦于以下问题:Golang Errorf函数的具体用法?Golang Errorf怎么用?Golang Errorf使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Errorf函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: parseLexRangeItem
func parseLexRangeItem(buf []byte) ([]byte, bool, error) {
if len(buf) == 0 {
return nil, false, errors.Errorf("empty lex range item")
}
ex := false
var dest []byte
switch buf[0] {
case '+':
if len(buf) > 1 {
return nil, false, errors.Errorf("invalid lex range item, only + allowed, but %s", buf)
}
dest = maxString
case '-':
if len(buf) > 1 {
return nil, false, errors.Errorf("invalid lex range item, only - allowed, but %s", buf)
}
dest = minString
case '(', '[':
dest = buf[1:]
if len(dest) == 0 {
return nil, false, errors.Errorf("invalid empty lex range item %s", buf)
}
ex = buf[0] == '('
default:
return nil, false, errors.Errorf("invalid lex range item at first byte, %s", buf)
}
return dest, ex, nil
}
示例2: Decode
func (h *EventHeader) Decode(data []byte) error {
if len(data) < EventHeaderSize {
return errors.Errorf("header size too short %d, must 19", len(data))
}
pos := 0
h.Timestamp = binary.LittleEndian.Uint32(data[pos:])
pos += 4
h.EventType = EventType(data[pos])
pos++
h.ServerID = binary.LittleEndian.Uint32(data[pos:])
pos += 4
h.EventSize = binary.LittleEndian.Uint32(data[pos:])
pos += 4
h.LogPos = binary.LittleEndian.Uint32(data[pos:])
pos += 4
h.Flags = binary.LittleEndian.Uint16(data[pos:])
pos += 2
if h.EventSize < uint32(EventHeaderSize) {
return errors.Errorf("invalid event size %d, must >= 19", h.EventSize)
}
return nil
}
示例3: ValidateVolumeParams
// ValidateVolumeParams is specified on the storage.VolumeSource interface.
func (v *ebsVolumeSource) ValidateVolumeParams(params storage.VolumeParams) error {
vol, err := parseVolumeOptions(params.Size, params.Attributes)
if err != nil {
return err
}
var minVolumeSize, maxVolumeSize int
switch vol.VolumeType {
case volumeTypeStandard:
minVolumeSize = minMagneticVolumeSizeGiB
maxVolumeSize = maxMagneticVolumeSizeGiB
case volumeTypeGp2:
minVolumeSize = minSsdVolumeSizeGiB
maxVolumeSize = maxSsdVolumeSizeGiB
case volumeTypeIo1:
minVolumeSize = minProvisionedIopsVolumeSizeGiB
maxVolumeSize = maxProvisionedIopsVolumeSizeGiB
}
if vol.VolumeSize < minVolumeSize {
return errors.Errorf(
"volume size is %d GiB, must be at least %d GiB",
vol.VolumeSize, minVolumeSize,
)
}
if vol.VolumeSize > maxVolumeSize {
return errors.Errorf(
"volume size %d GiB exceeds the maximum of %d GiB",
vol.VolumeSize, maxVolumeSize,
)
}
return nil
}
示例4: composeColumnPrivUpdate
// Compose update stmt assignment list for column scope privilege update.
func composeColumnPrivUpdate(ctx context.Context, priv mysql.PrivilegeType, name string, host string, db string, tbl string, col string) (string, error) {
newColumnPriv := ""
if priv == mysql.AllPriv {
for _, p := range mysql.AllColumnPrivs {
v, ok := mysql.Priv2SetStr[p]
if !ok {
return "", errors.Errorf("Unknown column privilege %v", p)
}
if len(newColumnPriv) == 0 {
newColumnPriv = v
} else {
newColumnPriv = fmt.Sprintf("%s,%s", newColumnPriv, v)
}
}
} else {
currColumnPriv, err := getColumnPriv(ctx, name, host, db, tbl, col)
if err != nil {
return "", errors.Trace(err)
}
p, ok := mysql.Priv2SetStr[priv]
if !ok {
return "", errors.Errorf("Unknown priv: %v", priv)
}
if len(currColumnPriv) == 0 {
newColumnPriv = p
} else {
newColumnPriv = fmt.Sprintf("%s,%s", currColumnPriv, p)
}
}
return fmt.Sprintf(`Column_priv="%s"`, newColumnPriv), nil
}
示例5: CheckCIDRs
// CheckCIDRs parses the list of strings as CIDRs, checking for
// correct formatting, no duplication and no overlaps. Returns error
// if no CIDRs are provided, unless cidrsOptional is true.
func CheckCIDRs(args []string, cidrsOptional bool) (set.Strings, error) {
// Validate any given CIDRs.
CIDRs := set.NewStrings()
for _, arg := range args {
_, ipNet, err := net.ParseCIDR(arg)
if err != nil {
logger.Debugf("cannot parse %q: %v", arg, err)
return CIDRs, errors.Errorf("%q is not a valid CIDR", arg)
}
cidr := ipNet.String()
if CIDRs.Contains(cidr) {
if cidr == arg {
return CIDRs, errors.Errorf("duplicate subnet %q specified", cidr)
}
return CIDRs, errors.Errorf("subnet %q overlaps with %q", arg, cidr)
}
CIDRs.Add(cidr)
}
if CIDRs.IsEmpty() && !cidrsOptional {
return CIDRs, errors.New("CIDRs required but not provided")
}
return CIDRs, nil
}
示例6: decorateAndWriteInfo
// decorateAndWriteInfo decorates the info struct with information
// from the given cfg, and the writes that out to the filesystem.
func decorateAndWriteInfo(info configstore.EnvironInfo, cfg *config.Config) error {
// Sanity check our config.
var endpoint configstore.APIEndpoint
if cert, ok := cfg.CACert(); !ok {
return errors.Errorf("CACert is not set")
} else if uuid, ok := cfg.UUID(); !ok {
return errors.Errorf("UUID is not set")
} else if adminSecret := cfg.AdminSecret(); adminSecret == "" {
return errors.Errorf("admin-secret is not set")
} else {
endpoint = configstore.APIEndpoint{
CACert: cert,
EnvironUUID: uuid,
}
}
creds := configstore.APICredentials{
User: "admin", // TODO(waigani) [email protected] once we have that set
Password: cfg.AdminSecret(),
}
info.SetAPICredentials(creds)
info.SetAPIEndpoint(endpoint)
info.SetBootstrapConfig(cfg.AllAttrs())
if err := info.Write(); err != nil {
return errors.Annotatef(err, "cannot create environment info %q", cfg.Name())
}
return nil
}
示例7: ensureUpgradeInfoUpdated
func ensureUpgradeInfoUpdated(st *State, machineId string, previousVersion, targetVersion version.Number) (*UpgradeInfo, error) {
var doc upgradeInfoDoc
if pdoc, err := currentUpgradeInfoDoc(st); err != nil {
return nil, errors.Trace(err)
} else {
doc = *pdoc
}
if doc.PreviousVersion != previousVersion {
return nil, errors.Errorf(
"current upgrade info mismatch: expected previous version %s, got %s",
previousVersion, doc.PreviousVersion)
}
if doc.TargetVersion != targetVersion {
return nil, errors.Errorf(
"current upgrade info mismatch: expected target version %s, got %s",
targetVersion, doc.TargetVersion)
}
controllersReady := set.NewStrings(doc.ControllersReady...)
if !controllersReady.Contains(machineId) {
return nil, errors.Trace(errUpgradeInfoNotUpdated)
}
return &UpgradeInfo{st: st, doc: doc}, nil
}
示例8: requestStart
// requestStart invokes a runWorker goroutine for the manifold with the supplied
// name. It must only be called from the loop goroutine.
func (engine *engine) requestStart(name string, delay time.Duration) {
// Check preconditions.
manifold, found := engine.manifolds[name]
if !found {
engine.tomb.Kill(errors.Errorf("fatal: unknown manifold %q", name))
}
// Copy current info and check more preconditions.
info := engine.current[name]
if !info.stopped() {
engine.tomb.Kill(errors.Errorf("fatal: trying to start a second %q manifold worker", name))
}
// Final check that we're not shutting down yet...
if engine.isDying() {
logger.Tracef("not starting %q manifold worker (shutting down)", name)
return
}
// ...then update the info, copy it back to the engine, and start a worker
// goroutine based on current known state.
info.starting = true
engine.current[name] = info
resourceGetter := engine.resourceGetter(name, manifold.Inputs)
go engine.runWorker(name, delay, manifold.Start, resourceGetter)
}
示例9: fetchResult
// fetchResult queries the given API for the given Action ID prefix, and
// makes sure the results are acceptable, returning an error if they are not.
func fetchResult(api APIClient, requestedId string) (params.ActionResult, error) {
none := params.ActionResult{}
actionTag, err := getActionTagByPrefix(api, requestedId)
if err != nil {
return none, err
}
actions, err := api.Actions(params.Entities{
Entities: []params.Entity{{actionTag.String()}},
})
if err != nil {
return none, err
}
actionResults := actions.Results
numActionResults := len(actionResults)
if numActionResults == 0 {
return none, errors.Errorf("no results for action %s", requestedId)
}
if numActionResults != 1 {
return none, errors.Errorf("too many results for action %s", requestedId)
}
result := actionResults[0]
if result.Error != nil {
return none, result.Error
}
return result, nil
}
示例10: checkTableDuplicate
func (r *JoinRset) checkTableDuplicate(t *TableSource, tr *TableRset) error {
if len(t.Name) > 0 {
// use alias name
_, ok := r.tableNames[t.Name]
if ok {
return errors.Errorf("%s: duplicate name %s", r, t.Name)
}
r.tableNames[t.Name] = struct{}{}
return nil
}
// first check ident name
identName := t.String()
_, ok := r.tableNames[identName]
if ok {
return errors.Errorf("%s: duplicate name %s", r, identName)
}
r.tableNames[identName] = struct{}{}
qualifiedName := tr.Schema + "." + tr.Name
// we should check qualifed name too, e,g select * form t1 join test.t1
if identName != qualifiedName {
_, ok = r.tableNames[qualifiedName]
if ok {
return errors.Errorf("%s: duplicate name %s", r, identName)
}
r.tableNames[qualifiedName] = struct{}{}
}
return nil
}
示例11: getMembers
func (o *setRow) getMembers(r storeReader, count int64) ([][]byte, error) {
it := r.getIterator()
defer r.putIterator(it)
var members [][]byte
for pfx := it.SeekTo(o.DataKeyPrefix()); count > 0 && it.Valid(); it.Next() {
key := it.Key()
if !bytes.HasPrefix(key, pfx) {
break
}
sfx := key[len(pfx):]
if err := o.ParseDataKeySuffix(sfx); err != nil {
return nil, err
}
if err := o.ParseDataValue(it.Value()); err != nil {
return nil, err
}
if len(o.Member) == 0 {
return nil, errors.Errorf("len(member) = %d", len(o.Member))
}
members = append(members, o.Member)
count--
}
if err := it.Error(); err != nil {
return nil, err
}
if len(members) == 0 {
return nil, errors.Errorf("len(members) = %d, set.size = %d", len(members), o.Size)
}
return members, nil
}
示例12: buildIndexInfo
func buildIndexInfo(tblInfo *model.TableInfo, unique bool, indexName model.CIStr, indexID int64, idxColNames []*coldef.IndexColName) (*model.IndexInfo, error) {
for _, col := range tblInfo.Columns {
if col.Name.L == indexName.L {
return nil, errors.Errorf("CREATE INDEX: index name collision with existing column: %s", indexName)
}
}
// build offsets
idxColumns := make([]*model.IndexColumn, 0, len(idxColNames))
for _, ic := range idxColNames {
col := findCol(tblInfo.Columns, ic.ColumnName)
if col == nil {
return nil, errors.Errorf("CREATE INDEX: column does not exist: %s", ic.ColumnName)
}
idxColumns = append(idxColumns, &model.IndexColumn{
Name: col.Name,
Offset: col.Offset,
Length: ic.Length,
})
}
// create index info
idxInfo := &model.IndexInfo{
ID: indexID,
Name: indexName,
Columns: idxColumns,
Unique: unique,
State: model.StateNone,
}
return idxInfo, nil
}
示例13: ParseMariadbGTIDSet
// We don't support multi source replication, so the mariadb gtid set may have only domain-server-sequence
func ParseMariadbGTIDSet(str string) (GTIDSet, error) {
if len(str) == 0 {
return MariadbGTID{0, 0, 0}, nil
}
seps := strings.Split(str, "-")
var gtid MariadbGTID
if len(seps) != 3 {
return gtid, errors.Errorf("invalid Mariadb GTID %v, must domain-server-sequence", str)
}
domainID, err := strconv.ParseUint(seps[0], 10, 32)
if err != nil {
return gtid, errors.Errorf("invalid MariaDB GTID Domain ID (%v): %v", seps[0], err)
}
serverID, err := strconv.ParseUint(seps[1], 10, 32)
if err != nil {
return gtid, errors.Errorf("invalid MariaDB GTID Server ID (%v): %v", seps[1], err)
}
sequenceID, err := strconv.ParseUint(seps[2], 10, 64)
if err != nil {
return gtid, errors.Errorf("invalid MariaDB GTID Sequence number (%v): %v", seps[2], err)
}
return MariadbGTID{
DomainID: uint32(domainID),
ServerID: uint32(serverID),
SequenceNumber: sequenceID}, nil
}
示例14: buildUpdateLists
func (b *planBuilder) buildUpdateLists(list []*ast.Assignment, p LogicalPlan) ([]*expression.Assignment, LogicalPlan) {
schema := p.GetSchema()
newList := make([]*expression.Assignment, len(schema))
for _, assign := range list {
col, err := schema.FindColumn(assign.Column)
if err != nil {
b.err = errors.Trace(err)
return nil, nil
}
if col == nil {
b.err = errors.Trace(errors.Errorf("column %s not found", assign.Column.Name.O))
return nil, nil
}
offset := schema.GetIndex(col)
if offset == -1 {
b.err = errors.Trace(errors.Errorf("could not find column %s.%s", col.TblName, col.ColName))
}
newExpr, np, _, err := b.rewrite(assign.Expr, p, nil, false)
if err != nil {
b.err = errors.Trace(err)
return nil, nil
}
p = np
newList[offset] = &expression.Assignment{Col: col, Expr: newExpr}
}
return newList, p
}
示例15: GetColDefaultValue
// GetColDefaultValue gets default value of the column.
func GetColDefaultValue(ctx context.Context, col *model.ColumnInfo) (interface{}, bool, error) {
// Check no default value flag.
if mysql.HasNoDefaultValueFlag(col.Flag) && col.Tp != mysql.TypeEnum {
return nil, false, errors.Errorf("Field '%s' doesn't have a default value", col.Name)
}
// Check and get timestamp/datetime default value.
if col.Tp == mysql.TypeTimestamp || col.Tp == mysql.TypeDatetime {
if col.DefaultValue == nil {
return nil, true, nil
}
value, err := expression.GetTimeValue(ctx, col.DefaultValue, col.Tp, col.Decimal)
if err != nil {
return nil, true, errors.Errorf("Field '%s' get default value fail - %s", col.Name, errors.Trace(err))
}
return value, true, nil
} else if col.Tp == mysql.TypeEnum {
// For enum type, if no default value and not null is set,
// the default value is the first element of the enum list
if col.DefaultValue == nil && mysql.HasNotNullFlag(col.Flag) {
return col.FieldType.Elems[0], true, nil
}
}
return col.DefaultValue, true, nil
}