func handleError(err *error, logStats *sqlQueryStats) { if logStats != nil { logStats.Send() } if x := recover(); x != nil { terr, ok := x.(*TabletError) if !ok { log.Error("Uncaught panic:\n%v\n%s", x, tb.Stack(4)) *err = NewTabletError(FAIL, "%v: uncaught panic", x) errorStats.Add("Panic", 1) return } *err = terr terr.RecordStats() if terr.ErrorType == RETRY { // Retry errors are too spammy return } log.Error("%s", terr.Message) } }
func handleExecError(query *proto.Query, err *error, logStats *sqlQueryStats) { if logStats != nil { logStats.Send() } if x := recover(); x != nil { terr, ok := x.(*TabletError) if !ok { log.Error("Uncaught panic for %v:\n%v\n%s", query, x, tb.Stack(4)) *err = NewTabletError(FAIL, "%v: uncaught panic for %v", x, query) errorStats.Add("Panic", 1) return } *err = terr terr.RecordStats() // suppress these errors in logs // if terr.ErrorType == RETRY { // return // } log.Error("%s: %v", terr.Message, query) } }