未验证 提交 8fbe1b51 编写于 作者: J Julius Volz 提交者: GitHub

Handle a bunch of unchecked errors (#4461)

There are many more (mostly finalizers like Close/Stop/etc.), but most of
the others seemed like one couldn't do much about them anyway.
Signed-off-by: NJulius Volz <julius.volz@gmail.com>
上级 d4eae8cc
...@@ -16,6 +16,7 @@ package main ...@@ -16,6 +16,7 @@ package main
import ( import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"log"
"net/http" "net/http"
"github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/proto"
...@@ -58,5 +59,5 @@ func main() { ...@@ -58,5 +59,5 @@ func main() {
} }
}) })
http.ListenAndServe(":1234", nil) log.Fatal(http.ListenAndServe(":1234", nil))
} }
...@@ -100,11 +100,16 @@ func main() { ...@@ -100,11 +100,16 @@ func main() {
http.Handle(cfg.telemetryPath, prometheus.Handler()) http.Handle(cfg.telemetryPath, prometheus.Handler())
logLevel := promlog.AllowedLevel{} logLevel := promlog.AllowedLevel{}
logLevel.Set(cfg.logLevel) if err := logLevel.Set(cfg.logLevel); err != nil {
panic(fmt.Sprintf("Error setting log level: %v", err))
}
logger := promlog.New(logLevel) logger := promlog.New(logLevel)
writers, readers := buildClients(logger, cfg) writers, readers := buildClients(logger, cfg)
serve(logger, cfg.listenAddr, writers, readers) if err := serve(logger, cfg.listenAddr, writers, readers); err != nil {
level.Error(logger).Log("msg", "Failed to listen", "addr", cfg.listenAddr, "err", err)
os.Exit(1)
}
} }
func parseFlags() *config { func parseFlags() *config {
......
...@@ -433,7 +433,10 @@ func (t *Test) exec(tc testCommand) error { ...@@ -433,7 +433,10 @@ func (t *Test) exec(tc testCommand) error {
} }
case *evalCmd: case *evalCmd:
q, _ := t.queryEngine.NewInstantQuery(t.storage, cmd.expr, cmd.start) q, err := t.queryEngine.NewInstantQuery(t.storage, cmd.expr, cmd.start)
if err != nil {
return err
}
res := q.Exec(t.context) res := q.Exec(t.context)
if res.Err != nil { if res.Err != nil {
if cmd.fail { if cmd.fail {
...@@ -446,14 +449,17 @@ func (t *Test) exec(tc testCommand) error { ...@@ -446,14 +449,17 @@ func (t *Test) exec(tc testCommand) error {
return fmt.Errorf("expected error evaluating query %q (line %d) but got none", cmd.expr, cmd.line) return fmt.Errorf("expected error evaluating query %q (line %d) but got none", cmd.expr, cmd.line)
} }
err := cmd.compareResult(res.Value) err = cmd.compareResult(res.Value)
if err != nil { if err != nil {
return fmt.Errorf("error in %s %s: %s", cmd, cmd.expr, err) return fmt.Errorf("error in %s %s: %s", cmd, cmd.expr, err)
} }
// Check query returns same result in range mode, // Check query returns same result in range mode,
/// by checking against the middle step. /// by checking against the middle step.
q, _ = t.queryEngine.NewRangeQuery(t.storage, cmd.expr, cmd.start.Add(-time.Minute), cmd.start.Add(time.Minute), time.Minute) q, err = t.queryEngine.NewRangeQuery(t.storage, cmd.expr, cmd.start.Add(-time.Minute), cmd.start.Add(time.Minute), time.Minute)
if err != nil {
return err
}
rangeRes := q.Exec(t.context) rangeRes := q.Exec(t.context)
if rangeRes.Err != nil { if rangeRes.Err != nil {
return fmt.Errorf("error evaluating query %q (line %d) in range mode: %s", cmd.expr, cmd.line, rangeRes.Err) return fmt.Errorf("error evaluating query %q (line %d) in range mode: %s", cmd.expr, cmd.line, rangeRes.Err)
......
...@@ -485,7 +485,10 @@ func (g *Group) RestoreForState(ts time.Time) { ...@@ -485,7 +485,10 @@ func (g *Group) RestoreForState(ts time.Time) {
smpl := alertRule.forStateSample(a, time.Now(), 0) smpl := alertRule.forStateSample(a, time.Now(), 0)
var matchers []*labels.Matcher var matchers []*labels.Matcher
for _, l := range smpl.Metric { for _, l := range smpl.Metric {
mt, _ := labels.NewMatcher(labels.MatchEqual, l.Name, l.Value) mt, err := labels.NewMatcher(labels.MatchEqual, l.Name, l.Value)
if err != nil {
panic(err)
}
matchers = append(matchers, mt) matchers = append(matchers, mt)
} }
......
...@@ -482,7 +482,9 @@ func (s *targetScraper) scrape(ctx context.Context, w io.Writer) error { ...@@ -482,7 +482,9 @@ func (s *targetScraper) scrape(ctx context.Context, w io.Writer) error {
} }
} else { } else {
s.buf.Reset(resp.Body) s.buf.Reset(resp.Body)
s.gzipr.Reset(s.buf) if err = s.gzipr.Reset(s.buf); err != nil {
return err
}
} }
_, err = io.Copy(w, s.gzipr) _, err = io.Copy(w, s.gzipr)
...@@ -813,7 +815,9 @@ mainLoop: ...@@ -813,7 +815,9 @@ mainLoop:
scrapeErr = appErr scrapeErr = appErr
} }
sl.report(start, time.Since(start), total, added, scrapeErr) if err := sl.report(start, time.Since(start), total, added, scrapeErr); err != nil {
level.Warn(sl.l).Log("msg", "appending scrape report failed", "err", err)
}
last = start last = start
select { select {
......
...@@ -29,11 +29,13 @@ func (s *Storage) Add(l labels.Labels, t int64, v float64) (uint64, error) { ...@@ -29,11 +29,13 @@ func (s *Storage) Add(l labels.Labels, t int64, v float64) (uint64, error) {
s.mtx.RLock() s.mtx.RLock()
defer s.mtx.RUnlock() defer s.mtx.RUnlock()
for _, q := range s.queues { for _, q := range s.queues {
q.Append(&model.Sample{ if err := q.Append(&model.Sample{
Metric: labelsToMetric(l), Metric: labelsToMetric(l),
Timestamp: model.Time(t), Timestamp: model.Time(t),
Value: model.SampleValue(v), Value: model.SampleValue(v),
}) }); err != nil {
panic(err) // QueueManager.Append() should always return nil as per doc string.
}
} }
return 0, nil return 0, nil
} }
......
...@@ -380,7 +380,9 @@ var ( ...@@ -380,7 +380,9 @@ var (
) )
func (api *API) series(r *http.Request) (interface{}, *apiError, func()) { func (api *API) series(r *http.Request) (interface{}, *apiError, func()) {
r.ParseForm() if err := r.ParseForm(); err != nil {
return nil, &apiError{errorBadData, fmt.Errorf("error parsing form values: %v", err)}, nil
}
if len(r.Form["match[]"]) == 0 { if len(r.Form["match[]"]) == 0 {
return nil, &apiError{errorBadData, fmt.Errorf("no match[] parameter provided")}, nil return nil, &apiError{errorBadData, fmt.Errorf("no match[] parameter provided")}, nil
} }
...@@ -816,7 +818,9 @@ func (api *API) deleteSeries(r *http.Request) (interface{}, *apiError, func()) { ...@@ -816,7 +818,9 @@ func (api *API) deleteSeries(r *http.Request) (interface{}, *apiError, func()) {
return nil, &apiError{errorUnavailable, errors.New("TSDB not ready")}, nil return nil, &apiError{errorUnavailable, errors.New("TSDB not ready")}, nil
} }
r.ParseForm() if err := r.ParseForm(); err != nil {
return nil, &apiError{errorBadData, fmt.Errorf("error parsing form values: %v", err)}, nil
}
if len(r.Form["match[]"]) == 0 { if len(r.Form["match[]"]) == 0 {
return nil, &apiError{errorBadData, fmt.Errorf("no match[] parameter provided")}, nil return nil, &apiError{errorBadData, fmt.Errorf("no match[] parameter provided")}, nil
} }
...@@ -866,7 +870,10 @@ func (api *API) snapshot(r *http.Request) (interface{}, *apiError, func()) { ...@@ -866,7 +870,10 @@ func (api *API) snapshot(r *http.Request) (interface{}, *apiError, func()) {
if !api.enableAdmin { if !api.enableAdmin {
return nil, &apiError{errorUnavailable, errors.New("Admin APIs disabled")}, nil return nil, &apiError{errorUnavailable, errors.New("Admin APIs disabled")}, nil
} }
skipHead, _ := strconv.ParseBool(r.FormValue("skip_head")) skipHead, err := strconv.ParseBool(r.FormValue("skip_head"))
if err != nil {
return nil, &apiError{errorUnavailable, fmt.Errorf("unable to parse boolean 'skip_head' argument: %v", err)}, nil
}
db := api.db() db := api.db()
if db == nil { if db == nil {
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
package web package web
import ( import (
"fmt"
"net/http" "net/http"
"sort" "sort"
...@@ -42,7 +43,10 @@ func (h *Handler) federation(w http.ResponseWriter, req *http.Request) { ...@@ -42,7 +43,10 @@ func (h *Handler) federation(w http.ResponseWriter, req *http.Request) {
h.mtx.RLock() h.mtx.RLock()
defer h.mtx.RUnlock() defer h.mtx.RUnlock()
req.ParseForm() if err := req.ParseForm(); err != nil {
http.Error(w, fmt.Sprintf("error parsing form values: %v", err), http.StatusBadRequest)
return
}
var matcherSets [][]*labels.Matcher var matcherSets [][]*labels.Matcher
for _, s := range req.Form["match[]"] { for _, s := range req.Form["match[]"] {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册