prometheus/tsdb
Charles Korn 59844498f7
Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115)
* Add failing test.

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Don't run OOO head garbage collection while reads are running.

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Add further test cases for different order of operations.

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Ensure all queriers are closed if `DB.blockChunkQuerierForRange()` fails.

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Ensure all queriers are closed if `DB.Querier()` fails.

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Invert error handling in `DB.Querier()` and `DB.blockChunkQuerierForRange()` to make it clearer

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Ensure that queries that touch OOO data can't block OOO head garbage collection forever.

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Address PR feedback: fix parameter name in comment

Co-authored-by: Jesus Vazquez <jesusvazquez@users.noreply.github.com>
Signed-off-by: Charles Korn <charleskorn@users.noreply.github.com>

* Address PR feedback: use `lastGarbageCollectedMmapRef`

Signed-off-by: Charles Korn <charles.korn@grafana.com>

* Address PR feedback: ensure pending reads are cleaned up if creating an OOO querier fails

Signed-off-by: Charles Korn <charles.korn@grafana.com>

---------

Signed-off-by: Charles Korn <charles.korn@grafana.com>
Signed-off-by: Charles Korn <charleskorn@users.noreply.github.com>
Co-authored-by: Jesus Vazquez <jesusvazquez@users.noreply.github.com>
2023-11-24 12:38:38 +01:00
..
agent tsdb/agent: use Go standard errors package 2023-11-08 09:22:31 +01:00
chunkenc tsdb/chunkenc: use Go standard errors package 2023-11-08 08:38:57 +00:00
chunks tsdb/chunk: use Go standard errors package 2023-11-08 09:19:44 +00:00
docs
encoding tsdb/encoding: use Go standard errors package 2023-11-11 19:01:11 +01:00
errors tsdb/errors: fix errorlint linter 2023-11-14 19:16:12 +00:00
fileutil tsdb/fileutil: use Go standard errors 2023-11-14 19:05:21 +00:00
goversion
index Merge pull request #13124 from mmorel-35/patch-5 2023-11-14 00:53:49 +01:00
record Labels: reduce allocations when creating from TSDB WAL (#13044) 2023-11-14 11:36:35 +00:00
testdata
tombstones Update tombstones.go 2023-11-11 19:22:06 +01:00
tsdbutil tsdb/tsdbutil: use Go standard errors 2023-11-14 20:46:36 +01:00
wlog remplace errors.Errorf by fmt.Errorf 2023-11-14 13:04:31 +00:00
.gitignore
block_test.go Add context argument to LabelQuerier.LabelValues (#12665) 2023-09-14 16:02:04 +02:00
block.go remplace errors.Errorf by fmt.Errorf 2023-11-14 13:04:31 +00:00
blockwriter_test.go Add a chunk size limit in bytes (#12054) 2023-08-24 15:21:17 +02:00
blockwriter.go
CHANGELOG.md
compact_test.go Fix according to code review 2023-11-02 13:37:07 +08:00
compact.go remplace errors.Errorf by fmt.Errorf 2023-11-14 13:04:31 +00:00
db_test.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
db.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
example_test.go Add context argument to Querier.Select (#12660) 2023-09-12 12:37:38 +02:00
exemplar_test.go
exemplar.go Fix error on ingesting out-of-order exemplars (#13021) 2023-11-16 15:07:37 +01:00
head_append.go Fix panic during tsdb Commit (#13092) 2023-11-12 14:51:37 +00:00
head_bench_test.go Pass ref to SeriesLifecycleCallback.PostDeletion (#12626) 2023-08-03 10:56:27 +02:00
head_read_test.go Use a linked list for memSeries.headChunk (#11818) 2023-07-31 11:10:24 +02:00
head_read.go ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
head_test.go Fix panic during tsdb Commit (#13092) 2023-11-12 14:51:37 +00:00
head_wal.go remplace errors.Errorf by fmt.Errorf 2023-11-14 13:04:31 +00:00
head.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
isolation_test.go
isolation.go ci(lint): enable predeclared linter 2023-05-21 07:33:54 +00:00
mocks_test.go
ooo_head_read_test.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
ooo_head_read.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
ooo_head_test.go ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
ooo_head.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
ooo_isolation_test.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
ooo_isolation.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
querier_bench_test.go ci(lint): enable nolintlint and remove redundant comments (#12926) 2023-10-31 12:35:13 +01:00
querier_test.go Fix issue where queries can fail or omit OOO samples if OOO head compaction occurs between creating a querier and reading chunks (#13115) 2023-11-24 12:38:38 +01:00
querier.go Refactor assigning MinTime in histogram chunks 2023-11-02 21:23:05 +08:00
README.md
repair_test.go Add context argument to IndexReader.Postings (#12667) 2023-09-13 17:45:06 +02:00
repair.go remplace errors.Errorf by fmt.Errorf 2023-11-14 13:04:31 +00:00
tsdbblockutil.go
wal_test.go Add Zstandard compression option for wlog (#11666) 2023-07-11 14:57:57 +02:00
wal.go remplace errors.Errorf by fmt.Errorf 2023-11-14 13:04:31 +00:00

TSDB

GoPkg

This directory contains the Prometheus TSDB (Time Series DataBase) library, which handles storage and querying of all Prometheus v2 data.

Documentation

External resources

A series of blog posts explaining different components of TSDB: