cmd/chihaya: refactor out combination of errors

This commit is contained in:
Jimmy Zelinskie 2017-05-01 15:48:26 -04:00
parent 68cbe0fc21
commit 23e9719073

View file

@ -5,6 +5,7 @@ import (
"os" "os"
"os/signal" "os/signal"
"runtime/pprof" "runtime/pprof"
"strings"
"syscall" "syscall"
log "github.com/Sirupsen/logrus" log "github.com/Sirupsen/logrus"
@ -83,36 +84,25 @@ func (r *Run) Start(ps storage.PeerStore) error {
return nil return nil
} }
func combineErrors(prefix string, errs []error) error {
var errStrs []string
for _, err := range errs {
errStrs = append(errStrs, err.Error())
}
return errors.New(prefix + ": " + strings.Join(errStrs, "; "))
}
// Stop shuts down an instance of Chihaya. // Stop shuts down an instance of Chihaya.
func (r *Run) Stop(keepPeerStore bool) (storage.PeerStore, error) { func (r *Run) Stop(keepPeerStore bool) (storage.PeerStore, error) {
log.Debug("stopping frontends and prometheus endpoint") log.Debug("stopping frontends and prometheus endpoint")
if errs := r.sg.Stop(); len(errs) != 0 { if errs := r.sg.Stop(); len(errs) != 0 {
errDelimiter := "; " return nil, combineErrors("failed while shutting down frontends", errs)
errStr := "failed while shutting down frontends: "
for _, err := range errs {
errStr += err.Error() + errDelimiter
}
// Remove the last delimiter.
errStr = errStr[0 : len(errStr)-len(errDelimiter)]
return nil, errors.New(errStr)
} }
log.Debug("stopping logic") log.Debug("stopping logic")
if errs := r.logic.Stop(); len(errs) != 0 { if errs := r.logic.Stop(); len(errs) != 0 {
errDelimiter := "; " return nil, combineErrors("failed while shutting down middleware", errs)
errStr := "failed while shutting down middleware: "
for _, err := range errs {
errStr += err.Error() + errDelimiter
}
// Remove the last delimiter.
errStr = errStr[0 : len(errStr)-len(errDelimiter)]
return nil, errors.New(errStr)
} }
if !keepPeerStore { if !keepPeerStore {