Mercurial > lbo > hg > clusterconsensus
view errors.go @ 40:2890843cac03
Make cc more reliable with clusterrpc and for failed single followers
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 26 Jul 2019 07:50:16 +0200 |
parents | fdd258eb58bc |
children |
line wrap: on
line source
package clusterconsensus import "fmt" const ( // An error with the ConsensusClient ERR_CALL string = "ERR_CALL" ERR_IO = "ERR_IO" ERR_ENCODING = "ERR_ENCODING" // We're currently in a bad state; try again later ERR_STATE = "ERR_STATE" ERR_MAJORITY = "ERR_MAJORITY" ERR_DENIED = "ERR_DENIED" ERR_SEQUENCE = "ERR_SEQUENCE" ERR_GAP = "ERR_GAP" ERR_CONNECT = "ERR_CONNECT" ) type ConsensusError struct { // one of ERR_* errEnum string // Description desc string // And/or inner error } func NewError(code, desc string, inner error) ConsensusError { return ConsensusError{errEnum: code, desc: desc, inner: inner} } func (e ConsensusError) Error() string { if e.inner != nil { return fmt.Sprintf("%s: %s %s", e.errEnum, e.desc, e.inner.Error()) } else { return fmt.Sprintf("%s: %s", e.errEnum, e.desc) } } // Whether it makes sense to retry the operation later. func (e ConsensusError) Retryable() bool { return e.errEnum == ERR_STATE || e.errEnum == ERR_CALL || e.errEnum == ERR_MAJORITY } // Returns an error code from ERR_* func (e ConsensusError) Code() string { return e.errEnum }