From 23045c579229f7559b8bf32ab76fa2c742895f1f Mon Sep 17 00:00:00 2001 From: joeduffy Date: Tue, 27 Jun 2017 11:12:06 -0700 Subject: [PATCH] Simply panic for failfast The old contract library tried to be glog-friendly in its failfast behavior. It turns out glog seldom does the right thing when goroutines are involved (which, as of last sprint, they now are). We already had issues with stacks not getting printed when --logtostderr was turned on, and the code tried to work around this; but this still didn't work for the goroutines case. All of this seems like way too much cleverness. Let's just use Go panics. --- pkg/util/contract/failfast.go | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/pkg/util/contract/failfast.go b/pkg/util/contract/failfast.go index aac7a15f6..fa902cc98 100644 --- a/pkg/util/contract/failfast.go +++ b/pkg/util/contract/failfast.go @@ -3,25 +3,10 @@ package contract import ( - "flag" "fmt" - "os" - "runtime/debug" - - "github.com/golang/glog" ) // failfast logs and panics the process in a way that is friendly to debugging. func failfast(msg string) { - v := flag.Lookup("logtostderr").Value - if g, isgettable := v.(flag.Getter); isgettable { - if enabled := g.Get().(bool); enabled { - // Print the stack to stderr anytime glog verbose logging is enabled, since glog won't. - if _, err := fmt.Fprintf(os.Stderr, "fatal: %v\n", msg); err != nil { - glog.Infof("Printing fatal error failed with error: %v", err) - } - debug.PrintStack() - } - } - glog.Fatal(msg) + panic(fmt.Sprintf("fatal: %v", msg)) }