prometheus/promql
beorn7 0ea5801e47 Handle errors caused by data corruption more gracefully
This requires all the panic calls upon unexpected data to be converted
into errors returned. This pollute the function signatures quite
lot. Well, this is Go...

The ideas behind this are the following:

- panic only if it's a programming error. Data corruptions happen, and
  they are not programming errors.

- If we detect a data corruption, we "quarantine" the series,
  essentially removing it from the database and putting its data into
  a separate directory for forensics.

- Failure during writing to a series file is not considered corruption
  automatically. It will call setDirty, though, so that a
  crashrecovery upon the next restart will commence and check for
  that.

- Series quarantining and setDirty calls are logged and counted in
  metrics, but are hidden from the user of the interfaces in
  interface.go, whith the notable exception of Append(). The reasoning
  is that we treat corruption by removing the corrupted series, i.e. a
  query for it will return no results on its next call anyway, so
  return no results right now. In the case of Append(), we want to
  tell the user that no data has been appended, though.

Minor side effects:

- Now consistently using filepath.* instead of path.*.

- Introduced structured logging where I touched it. This makes things
  less consistent, but a complete change to structured logging would
  be out of scope for this PR.
2016-03-02 23:02:34 +01:00
..
testdata Merge branch 'beorn7/storage2' into beorn7/storage3 2016-03-02 23:02:06 +01:00
analyzer.go Handle errors caused by data corruption more gracefully 2016-03-02 23:02:34 +01:00
ast.go Fix various typos in comments. 2016-02-10 03:47:00 +01:00
engine_test.go promql: Reduce flakiness of concurrency test 2015-09-23 10:07:30 +01:00
engine.go Improve predict_linear 2016-02-25 12:10:55 +01:00
functions.go Improve predict_linear 2016-02-25 12:10:55 +01:00
lex_test.go Add without aggregator modifier. 2016-02-08 14:05:33 +00:00
lex.go Add without aggregator modifier. 2016-02-08 14:05:33 +00:00
parse_test.go Add without aggregator modifier. 2016-02-08 14:05:33 +00:00
parse.go Fix various typos in comments. 2016-02-10 03:47:00 +01:00
printer_test.go Add without aggregator modifier. 2016-02-08 14:05:33 +00:00
printer.go Add without aggregator modifier. 2016-02-08 14:05:33 +00:00
promql_test.go Fix most golint warnings. 2015-08-26 12:44:46 +02:00
quantile.go Switch promql types to common/model 2015-08-25 13:49:14 +02:00
test.go Unify duration parsing 2016-01-29 15:41:50 +01:00