|
|
- package errors
-
- import (
- "fmt"
-
- "github.com/pkg/errors"
- )
-
- var (
- errValidatorsChanged = fmt.Errorf("Validators differ between header and certifier")
- errCommitNotFound = fmt.Errorf("Commit not found by provider")
- errTooMuchChange = fmt.Errorf("Validators change too much to safely update")
- errPastTime = fmt.Errorf("Update older than certifier height")
- errNoPathFound = fmt.Errorf("Cannot find a path of validators")
- )
-
- // IsCommitNotFoundErr checks whether an error is due to missing data
- func IsCommitNotFoundErr(err error) bool {
- return err != nil && (errors.Cause(err) == errCommitNotFound)
- }
-
- // ErrCommitNotFound indicates that a the requested commit was not found.
- func ErrCommitNotFound() error {
- return errors.WithStack(errCommitNotFound)
- }
-
- // IsValidatorsChangedErr checks whether an error is due
- // to a differing validator set.
- func IsValidatorsChangedErr(err error) bool {
- return err != nil && (errors.Cause(err) == errValidatorsChanged)
- }
-
- // ErrValidatorsChanged indicates that the validator set was changed between two commits.
- func ErrValidatorsChanged() error {
- return errors.WithStack(errValidatorsChanged)
- }
-
- // IsTooMuchChangeErr checks whether an error is due to too much change
- // between these validators sets.
- func IsTooMuchChangeErr(err error) bool {
- return err != nil && (errors.Cause(err) == errTooMuchChange)
- }
-
- // ErrTooMuchChange indicates that the underlying validator set was changed by >1/3.
- func ErrTooMuchChange() error {
- return errors.WithStack(errTooMuchChange)
- }
-
- // IsPastTimeErr ...
- func IsPastTimeErr(err error) bool {
- return err != nil && (errors.Cause(err) == errPastTime)
- }
-
- // ErrPastTime ...
- func ErrPastTime() error {
- return errors.WithStack(errPastTime)
- }
-
- // IsNoPathFoundErr checks whether an error is due to no path of
- // validators in provider from where we are to where we want to be
- func IsNoPathFoundErr(err error) bool {
- return err != nil && (errors.Cause(err) == errNoPathFound)
- }
-
- // ErrNoPathFound ...
- func ErrNoPathFound() error {
- return errors.WithStack(errNoPathFound)
- }
-
- //--------------------------------------------
-
- type errHeightMismatch struct {
- h1, h2 int64
- }
-
- func (e errHeightMismatch) Error() string {
- return fmt.Sprintf("Blocks don't match - %d vs %d", e.h1, e.h2)
- }
-
- // IsHeightMismatchErr checks whether an error is due to data from different blocks
- func IsHeightMismatchErr(err error) bool {
- if err == nil {
- return false
- }
- _, ok := errors.Cause(err).(errHeightMismatch)
- return ok
- }
-
- // ErrHeightMismatch returns an mismatch error with stack-trace
- func ErrHeightMismatch(h1, h2 int64) error {
- return errors.WithStack(errHeightMismatch{h1, h2})
- }
|