prometheus/tsdb
beorn7 f6f4fd6556 tsdb: Do a full rollback upon commit error
I think the previous behavior is problematic as it will leave
`memSeries` around that still have `pendingCommit` set to `true`.

The only case where this can happen in this code path is a failure to
write to the WAL, in which case we are probably in trouble anyway. I
believe, however, we should still try to do the right thing and do the
full rollback. This will implicitly try to write to the WAL again, but
this time without samples, which may even succeed. (But we propagate
the previous error in any case.)

This also adds `a.head.putSeriesBuffer(a.sampleSeries)` to Rollback,
which was previously missing.

Signed-off-by: beorn7 <beorn@grafana.com>
2020-03-10 14:54:41 +01:00
..
chunkenc Specify that returned samples must be ordered by timestamp. (#6877) 2020-02-26 13:11:55 +00:00
chunks Refactor tsdb/chunks/chunks.go for future PRs (#6754) 2020-02-05 19:09:40 +05:30
cmd/tsdb Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
docs/format Stream symbols during compaction. (#6468) 2019-12-17 19:49:54 +00:00
encoding Avoid WriteAt for Postings. 2019-12-16 15:30:49 +00:00
errors
fileutil Add OpenMmapFileWithSize method (#6753) 2020-02-05 19:08:30 +05:30
goversion Fix some typo in comments (#6730) 2020-01-31 12:11:52 +05:30
index tsdb: writePostingsToTmpFiles returns nil instead of err (#6618) 2020-01-13 22:40:12 +00:00
record Spelling (#6517) 2020-01-02 15:54:09 +01:00
test Port tsdb to use pkg/labels. (#6326) 2019-11-18 11:53:33 -08:00
testdata Handle V1 indexes, some of which have unsorted posting offset tables. (#6564) 2020-01-06 14:06:11 +00:00
tombstones Bring back tombstones to Head block (#6542) 2020-01-20 21:08:00 +05:30
tsdbutil
wal Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
.gitignore
block_test.go Unify Iterator interfaces. All point to storage now. 2020-02-17 18:03:54 +00:00
block.go Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
CHANGELOG.md Spelling (#6517) 2020-01-02 15:54:09 +01:00
compact_test.go Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
compact.go Use a cryptographically random generator for ULID 2020-02-25 12:12:03 +01:00
db_test.go tsdb: don't allow ingesting empty labelsets (#6891) 2020-03-02 07:18:05 +00:00
db.go Moved readyStorage to main. 2020-02-17 18:03:57 +00:00
head_bench_test.go Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
head_test.go Do not attempt isolation for appendID == 0 2020-03-01 02:48:35 +01:00
head.go tsdb: Do a full rollback upon commit error 2020-03-10 14:54:41 +01:00
isolation.go Do not attempt isolation for appendID == 0 2020-03-01 02:48:35 +01:00
mocks_test.go Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
querier_bench_test.go Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
querier_test.go Make head Postings only return series in time range 2020-02-20 22:41:46 +01:00
querier.go Make head Postings only return series in time range 2020-02-20 22:18:42 +01:00
README.md Edit TSDB README badges 2019-10-24 15:35:47 +05:30
repair_test.go Port tsdb to use pkg/labels. (#6326) 2019-11-18 11:53:33 -08:00
repair.go tsdb: fix typo for wrong metric name (#6938) 2020-03-09 08:25:31 +00:00
tsdbblockutil.go Unify Iterator interfaces. All point to storage now. 2020-02-17 18:03:54 +00:00
wal_test.go Spelling (#6517) 2020-01-02 15:54:09 +01:00
wal.go Spelling (#6517) 2020-01-02 15:54:09 +01:00

TSDB

GoDoc

This repository contains the Prometheus storage layer that is used in its 2.x releases.

A writeup of its design can be found here.

Based on the Gorilla TSDB white papers.

Video: Storing 16 Bytes at Scale from PromCon 2017.

See also the format documentation.