prometheus/tsdb
George Krajcsovits 39a35d92bc
tsdb/head: wlog exemplars after samples (#13113)
When samples are committed in the head, they are also written to the WAL.
The order of WAL records should be sample then exemplar, but this was
not the case for native histogram samples. This PR fixes that.

The problem with the wrong order is that remote write reads the WAL and
sends the recorded timeseries in the WAL order, which means exemplars
arrived before histogram samples. If the receiving side is Prometheus
TSDB and the series has not existed before then the exemplar does not
currently create the series. Which means the exemplar is rejected and lost.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2023-11-11 17:30:16 +01:00
..
agent Change Validate to be a method on histogram structs 2023-11-03 16:47:59 +02:00
chunkenc ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
chunks ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
docs Merge branch 'main' into sparsehistogram 2022-08-10 17:54:37 +02:00
encoding Merge 'main' into sparsehistogram 2022-10-05 22:14:49 +02:00
errors ci(lint): enable nolintlint and remove redundant comments (#12926) 2023-10-31 12:35:13 +01:00
fileutil Update go to 1.19, set min version to 1.18 (#11279) 2022-09-07 11:30:48 +02:00
goversion lint: Adjust to the lint warnings raised by current versions of golint-ci 2023-04-19 17:10:10 +02:00
index tsdb/index.Symbols: Drop context argument from Lookup method (#13058) 2023-11-08 13:08:33 +01:00
record TSDB: Pre-size buffer to read samples from WAL 2023-10-17 17:31:26 +00:00
testdata
tombstones Copy tombstone intervals to avoid race (#12245) 2023-05-17 15:15:12 +02:00
tsdbutil Add a chunk size limit in bytes (#12054) 2023-08-24 15:21:17 +02:00
wlog ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
.gitignore
block.go Add context argument to tsdb.PostingsForMatchers 2023-09-16 18:13:32 +02:00
block_test.go Add context argument to LabelQuerier.LabelValues (#12665) 2023-09-14 16:02:04 +02:00
blockwriter.go Merge 'main' into sparsehistogram 2022-10-05 22:14:49 +02:00
blockwriter_test.go Add a chunk size limit in bytes (#12054) 2023-08-24 15:21:17 +02:00
CHANGELOG.md
compact.go Fix int32 overflow issues (#12978) 2023-10-16 16:23:26 +02:00
compact_test.go Fix according to code review 2023-11-02 13:37:07 +08:00
db.go Expose --storage.tsdb.retention.time in metric prometheus_tsdb_retention_limit_seconds (#12986) 2023-10-24 13:34:42 +02:00
db_test.go ValidateHistogram: strict Count check in absence of NaNs 2023-11-03 16:17:24 +02:00
example_test.go Add context argument to Querier.Select (#12660) 2023-09-12 12:37:38 +02:00
exemplar.go Update exp package (#12650) 2023-09-21 22:53:51 +02:00
exemplar_test.go tsdb: in tests use labels.FromStrings 2022-09-09 13:34:49 +02:00
head.go head.go: Remove an unneeded snapshot trigger that was moved in https://github.com/prometheus/prometheus/pull/9328 2023-11-09 11:46:46 +01:00
head_append.go tsdb/head: wlog exemplars after samples (#13113) 2023-11-11 17:30:16 +01:00
head_bench_test.go Pass ref to SeriesLifecycleCallback.PostDeletion (#12626) 2023-08-03 10:56:27 +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_read_test.go Use a linked list for memSeries.headChunk (#11818) 2023-07-31 11:10:24 +02:00
head_test.go tsdb/head: wlog exemplars after samples (#13113) 2023-11-11 17:30:16 +01:00
head_wal.go ci(lint): enable nolintlint and remove redundant comments (#12926) 2023-10-31 12:35:13 +01:00
isolation.go ci(lint): enable predeclared linter 2023-05-21 07:33:54 +00:00
isolation_test.go tsdb: turn off transaction isolation for head compaction (#11317) 2022-09-27 19:31:23 +05:30
mocks_test.go
ooo_head.go Name float values as "floats", not as "values" 2023-04-13 19:25:24 +02:00
ooo_head_read.go ci(lint): enable nolintlint and remove redundant comments (#12926) 2023-10-31 12:35:13 +01:00
ooo_head_read_test.go ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
ooo_head_test.go ci(lint): enable godot; append dot at the end of comments 2023-10-31 19:53:38 +02:00
querier.go Refactor assigning MinTime in histogram chunks 2023-11-02 21:23:05 +08: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 Merge pull request #12881 from dimitarvdimitrov/dimitar/TestQuerierIndexQueriesRace-less-synchronisation 2023-11-07 12:16:43 +01:00
README.md Fixed broken link in tsdb README.md 2022-10-07 16:20:20 +00:00
repair.go refactor: move from io/ioutil to io and os packages (#10528) 2022-04-27 11:24:36 +02:00
repair_test.go Add context argument to IndexReader.Postings (#12667) 2023-09-13 17:45:06 +02:00
tsdbblockutil.go Support FloatHistogram in TSDB (#11522) 2022-12-28 14:25:07 +05:30
wal.go ci(lint): enable nolintlint and remove redundant comments (#12926) 2023-10-31 12:35:13 +01:00
wal_test.go Add Zstandard compression option for wlog (#11666) 2023-07-11 14:57:57 +02: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: