VictoriaMetrics/lib/storage
Aliaksandr Valialkin b133de1e37 lib/storage: move deletedMetricIDs set from indexDB to Storage
This makes consitent the list of deleted metricIDs when it is used from both the current indexDB and the previous indexDB (aka extDB).
This should fix the issue, which could lead to storing new samples under deleted metricIDs after indexDB rotation.
See more details at https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1347#issuecomment-861232136 .

Thanks to @tangqipengleoo for the initial analysis and the pull request - https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1383 .

This commit resolves the issue in more generic way compared to https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1383 .

The downside of the commit is the deletedMetricIDs set isn't cleaned from the metricIDs outside the retention. It needs app restart.
This should be OK in most cases.
2021-06-15 15:07:54 +03:00
..
block.go lib/storage: drop more samples outside the given retention during background merge 2020-10-31 20:44:47 +02:00
block_header.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:13:15 +03:00
block_header_test.go lib/storage: typo fix: umarshal -> unmarshal 2021-03-02 20:48:44 +02:00
block_stream_merger.go lib/storage: remove prioritizing of merging small parts over merging big parts, since it doesn't work as expected 2020-07-30 20:02:22 +03:00
block_stream_reader.go lib/storage: reuse timestamp blocks for adjancent metric blocks with identical timestamps 2020-09-09 23:59:21 +03:00
block_stream_reader_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
block_stream_reader_timing_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
block_stream_writer.go spelling fix: adjacent (#1115) 2021-03-09 09:19:16 +02:00
block_stream_writer_timing_test.go lib/storage: skip deduplication when creating inmemory data blocks 2021-02-09 02:26:16 +02:00
block_test.go lib/storage: fix tests for 32-bit arches such as GOARCH=386 and GOARCH=arm 2020-09-29 13:10:37 +03:00
dedup.go lib/storage/dedup.go: go fmt 2020-04-26 14:37:36 +03:00
dedup_test.go all: spelling fix: superflouos->superfluous. This is a follow-up for 0acdab3ab9 2020-11-24 12:42:04 +02:00
dedup_timing_test.go lib/storage: improve deduplication algorithm 2020-04-26 13:10:18 +03:00
index_db.go lib/storage: move deletedMetricIDs set from indexDB to Storage 2021-06-15 15:07:54 +03:00
index_db_test.go lib/storage: move deletedMetricIDs set from indexDB to Storage 2021-06-15 15:07:54 +03:00
index_db_timing_test.go lib/storage: reset cache on disk during series deletion and during indexdb rotation 2021-06-11 12:54:36 +03:00
inmemory_part.go lib: extract common code for returning fast unix timestamp into lib/fasttime 2020-05-14 23:06:50 +03:00
inmemory_part_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
inmemory_part_timing_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
merge.go lib/storage: do not update b.nextIdx if no samples are removed because of retention 2021-03-29 12:13:38 +03:00
merge_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
merge_timing_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
metaindex_row.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:13:15 +03:00
metaindex_row_test.go lib/storage: correctly use maxBlockSize in various checks 2020-09-24 18:13:15 +03:00
metric_name.go lib/storage: remove possible data race when logging dropped labels 2021-05-20 11:54:06 +03:00
metric_name_test.go app/vminsert: add support for data ingestion via other vminsert nodes 2021-05-08 19:53:45 +03:00
part.go lib/{mergeset,storage}: do not use pools for indexBlock and inmemoryBlock during their caching, since this results in higher memory usage in production without any performance gains 2021-02-21 21:43:37 +02:00
part_header.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
part_header_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
part_search.go lib/{mergeset,storage}: do not use pools for indexBlock and inmemoryBlock during their caching, since this results in higher memory usage in production without any performance gains 2021-02-21 21:43:37 +02:00
part_search_test.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
partition.go lib/storage: consistency renaming: getMaxRawRowsPerPartition -> getMaxRawRowsPerShard 2021-06-11 10:52:31 +03:00
partition_search.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
partition_search_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
partition_test.go lib/{mergeset,storage}: allow merging smaller number of small parts 2021-02-21 21:43:37 +02:00
raw_block.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
raw_row.go lib/storage: skip deduplication when creating inmemory data blocks 2021-02-09 02:26:16 +02:00
search.go lib/storage: code clarification: remove caching the found metricName in searchMetricName 2021-04-13 10:20:35 +03:00
search_test.go app/vmstorage: add ability to limit series cardinality via -storage.maxHourlySeries and -storage.maxDailySeries command-line flags 2021-05-20 15:31:57 +03:00
storage.go lib/storage: move deletedMetricIDs set from indexDB to Storage 2021-06-15 15:07:54 +03:00
storage_test.go lib/storage: reduce memory allocations when syncing dateMetricIDCache 2021-06-03 16:20:02 +03:00
storage_timing_test.go app/vmstorage: add ability to limit series cardinality via -storage.maxHourlySeries and -storage.maxDailySeries command-line flags 2021-05-20 15:31:57 +03:00
table.go lib/storage: sort tag filters by the number of loops they need for the execution 2021-02-18 12:52:29 +02:00
table_search.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
table_search_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
table_search_timing_test.go lib/storage: consistency renaming: getMaxRawRowsPerPartition -> getMaxRawRowsPerShard 2021-06-11 10:52:31 +03:00
table_test.go app/vmstorage: support for -retentionPeriod smaller than one month 2020-10-20 14:42:46 +03:00
table_timing_test.go all: properly handle CPU limits set on the host system/container 2020-12-08 21:07:03 +02:00
tag_filters.go lib/storage: further tuning for time series search 2021-03-16 18:47:29 +02:00
tag_filters_test.go lib/storage: use composite index for a query with a name filter and negative filters 2021-02-18 18:57:45 +02:00
tag_filters_timing_test.go lib/storage: small code adjustements after d2960a20e0 2020-10-17 01:17:12 +03:00
time.go all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
time_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
tsid.go lib/storage: optimize TSID comparison 2019-09-26 14:20:02 +03:00
tsid_test.go all: open-sourcing cluster version 2019-05-23 00:25:38 +03:00