prometheus/tsdb
György Krajcsovits bb70370d72 TSDB head: fix race between AppendHistogram and Commit
Move writing memSeries lastHistogramValue and lastFloatHistogramValue
after series creation under lock.

The resulting code isn't totally correct in the sense that we're setting
these values before Commit() , so they might be overwritten/rolled back
later.

Also Append of stale sample checks the values without lock, so there's
still a potential race.

The correct solution would be to set these only in Commit() which we
actually do, but then Commit() would also need to process samples in
order and not floats first, then histograms, then float histograms - which
leads to not knowing what stale marker to write for histograms.

Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2024-10-10 16:59:15 +02:00
..
agent chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
chunkenc lint 2024-09-18 15:23:46 +01:00
chunks Fix missing histogram copy in sampleRing 2024-10-02 13:57:28 +02:00
docs docs: Some nitpicking in chunks.md 2024-10-09 14:32:12 +02:00
encoding Neater string vs byte-slice conversions (#14425) 2024-09-21 12:19:21 +02:00
errors
fileutil
goversion
index Merge pull request #14975 from colega/process-mempostings-delete-with-gomaxprocs-workers 2024-09-29 07:58:42 +01:00
record chore: Fix typos (#14868) 2024-09-10 22:32:03 +02:00
testdata
tombstones chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
tsdbutil chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
wlog chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
.gitignore
block.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
block_test.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
blockwriter.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
blockwriter_test.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
CHANGELOG.md
compact.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
compact_test.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
db.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
db_test.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
example_test.go
exemplar.go chore: Fix typos (#14868) 2024-09-10 22:32:03 +02:00
exemplar_test.go
head.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
head_append.go TSDB head: fix race between AppendHistogram and Commit 2024-10-10 16:59:15 +02:00
head_bench_test.go
head_dedupelabels.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
head_other.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
head_read.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
head_read_test.go
head_test.go Unit test for data race in head.Appender.AppendHistogram 2024-10-10 14:10:07 +02:00
head_wal.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
isolation.go
isolation_test.go
mocks_test.go
ooo_head.go TSDB: Remove code for querying OOO-head only 2024-08-14 13:41:13 +01:00
ooo_head_read.go [BUGFIX] TSDB: Only query chunks up to truncation time (#14948) 2024-09-20 17:44:04 +01:00
ooo_head_read_test.go [BUGFIX] TSDB: Only query chunks up to truncation time (#14948) 2024-09-20 17:44:04 +01:00
ooo_head_test.go tsdb: Add support for ingestion of out-of-order native histogram samples (#14546) 2024-09-17 11:19:06 +02:00
ooo_isolation.go
ooo_isolation_test.go
querier.go Fix: optimize .* regexp performance 2024-09-17 12:18:31 +02:00
querier_bench_test.go TSDB: Simplify benchmark regexps 2024-09-16 17:48:05 +01:00
querier_test.go [BUGFIX] TSDB: Only query chunks up to truncation time (#14948) 2024-09-20 17:44:04 +01:00
README.md
repair.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
repair_test.go
testutil.go tsdb: Add support for ingestion of out-of-order native histogram samples (#14546) 2024-09-17 11:19:06 +02:00
tsdbblockutil.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04: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: