prometheus/storage
Arve Knudsen f727c5b932 tsdb: remove metric metadata persistence, refactor to generic kind framework
Remove metric metadata persistence (keeping only OTel resource/scope
features) and refactor the native metadata subsystem from hardcoded
resource/scope handling to a generic kind framework.

The kind framework uses Go generics for type-safe hot paths
(Versioned[V], MemStore[V], KindOps[V]) and a KindDescriptor interface
for runtime dispatch at serialization boundaries (WAL, Parquet, head
commit/replay).

Key changes:
- Remove metric metadata persistence feature and related API endpoints
- Add Versioned[V] generic container and MemStore[V] generic store
- Add KindDescriptor interface and global kind registry
- Implement resourceKindDescriptor and scopeKindDescriptor
- Replace memSeries resource/scope fields with kindMeta []kindMetaEntry
- Use kind-aware iteration in compaction and DB.SeriesMetadata()
- Update WAL replay to use CommitToSeries via kind registry
- Wire WAL encode/decode functions via init() to break import cycle
- Fix silent data corruption when RefResolver fails on read or write
- Provide type aliases for backward compatibility

Adding a new metadata kind now requires implementing KindOps +
KindDescriptor and registering in init(), instead of modifying 12+ files.

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2026-03-20 17:56:16 +01:00
..
remote tsdb: remove metric metadata persistence, refactor to generic kind framework 2026-03-20 17:56:16 +01:00
buffer.go storage/buffer.go: add ST to sample types and iterators 2026-01-14 13:15:10 +01:00
buffer_test.go add test coverage for buffer.go 2026-01-14 13:15:17 +01:00
errors.go Remove copyright date from headers (#17785) 2026-01-05 13:46:21 +01:00
errors_test.go storage: fix ToError() to return nil for empty partial errors (#18002) 2026-02-03 16:58:02 +01:00
fanout.go feat: add OTel resource/scope attributes persistence per time series 2026-03-20 17:56:16 +01:00
fanout_test.go storage: optimized fanoutAppenderV2 (#17976) 2026-02-02 07:04:30 +00:00
generic.go feat: add OTel resource/scope attributes persistence per time series 2026-03-20 17:56:16 +01:00
interface.go feat: add OTel resource/scope attributes persistence per time series 2026-03-20 17:56:16 +01:00
interface_append.go feat: add OTel resource/scope attributes persistence per time series 2026-03-20 17:56:16 +01:00
interface_test.go feat(tsdb): new AppenderV2 and AtST interface for chunks 2026-01-14 13:15:09 +01:00
lazy.go Remove copyright date from headers (#17785) 2026-01-05 13:46:21 +01:00
memoized_iterator.go Remove copyright date from headers (#17785) 2026-01-05 13:46:21 +01:00
memoized_iterator_test.go Remove copyright date from headers (#17785) 2026-01-05 13:46:21 +01:00
merge.go feat: add OTel resource/scope attributes persistence per time series 2026-03-20 17:56:16 +01:00
merge_test.go feat: add OTel resource/scope attributes persistence per time series 2026-03-20 17:56:16 +01:00
noop.go feat: add OTel resource/scope attributes persistence per time series 2026-03-20 17:56:16 +01:00
secondary.go Remove copyright date from headers (#17785) 2026-01-05 13:46:21 +01:00
series.go feat(tsdb): allow using ST capable XOR chunks - retain format on read (#18013) 2026-02-20 09:15:51 +01:00
series_test.go test ListSeriesIterator with ST 2026-01-14 13:15:19 +01:00