VictoriaMetrics/lib/storage
Roman Khavronenko be31376349
lib/storage: check for free disk space before opening tables (#4035)
* lib/storage: check for free disk space before opening tables

We check for free disk space before call to `openTable`,
so `Storage` can be set to ReadOnly before mergeWorkers start.

Before the change, there was a chance that merges will start
even if Storage has to start in ReadOnly mode because of
`-storage.minFreeDiskSpaceBytes` limit.

https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4023
Signed-off-by: hagen1778 <roman@victoriametrics.com>

* lib/storage: chore

Signed-off-by: hagen1778 <roman@victoriametrics.com>

* Update lib/storage/storage.go

---------

Signed-off-by: hagen1778 <roman@victoriametrics.com>
Co-authored-by: Aliaksandr Valialkin <valyala@victoriametrics.com>
2023-04-01 00:31:32 -07:00
..
block.go lib/storage: validate timestamps in the block only if they use encoding, which needs validation 2022-10-21 00:54:37 +03:00
block_header.go lib/storage: verify that timestamps in block are in the range specified by blockHeader.{Min,Max}Timestamp when upacking the block 2022-09-06 13:07:49 +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: skip blocks outside the configured retention during search 2022-10-24 02:56:13 +03:00
block_stream_reader.go lib/storage: remove logging redundant path values in a single error message 2022-12-03 22:14:19 -08:00
block_stream_reader_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08: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 lib/{mergeset,storage}: pass compressLevel to blockStreamWriter.InitFromInmemoryPart 2022-12-03 22:47:06 -08:00
block_stream_writer_timing_test.go lib/{mergeset,storage}: pass compressLevel to blockStreamWriter.InitFromInmemoryPart 2022-12-03 22:47:06 -08:00
block_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
dedup.go lib/storage: follow-up after 7c0ae3a86a 2022-12-08 18:18:49 -08:00
dedup_test.go lib/storage: follow-up after 7c0ae3a86a 2022-12-08 18:18:49 -08:00
dedup_timing_test.go lib/storage: follow-up after 7c0ae3a86a 2022-12-08 18:18:49 -08:00
index_db.go lib/storage: simplify the fix from 488940502c 2023-01-07 01:11:35 -08:00
index_db_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
index_db_timing_test.go lib/storage: properly take into account already registered series when -storage.maxHourlySeries or -storage.maxDailySeries limits are enabled 2022-06-20 13:53:41 +03:00
inmemory_part.go all: add -inmemoryDataFlushInterval command-line flag for controlling the frequency of saving in-memory data to disk 2022-12-05 15:28:09 -08:00
inmemory_part_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
inmemory_part_timing_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
merge.go lib/storage: optimization: do not scan block for rows outside retention if it is covered by the retention 2022-12-03 22:14:20 -08:00
merge_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
merge_timing_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
metaindex_row.go all: subsitute ioutil.ReadAll with io.ReadAll 2022-08-22 00:16:04 +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 app/vmselect/promql: avoid memory allocations and copying from source timeseries to the returned result at timeseriesToResult() 2023-01-09 22:39:15 -08: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: tune caches size limits for indexdb/dataBlocks and indexdb/indexBlocks 2022-01-21 12:46:05 +02:00
part_header.go lib/fs: add canOverwrite arg to WriteFileAtomically when it is allowed to overwrite the file atomically if it already exists 2022-10-26 01:08:35 +03:00
part_header_test.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
part_search.go lib/storage: optimize partSearch.searchBHS() for common case when the TSID for the current block header is bigger or equal to the current tsid 2022-12-19 10:31:39 -08:00
part_search_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
part_search_timing_test.go lib/storage: skip missing tsids in the current block header by using binary search 2022-12-14 22:07:55 -08:00
partition.go lib/{mergeset,storage}: prevent from long wait time when creating a snapshot under high data ingestion rate 2023-03-24 22:12:08 -07:00
partition_search.go lib/storage: fixes finalDedup for backfilled data (#3737) 2023-02-01 09:57:02 -08:00
partition_search_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
partition_test.go lib/{mergeset,storage}: improve the detection of the needed free space for background merge 2021-08-25 10:01:09 +03:00
raw_block.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
raw_row.go lib/{mergeset,storage}: pass compressLevel to blockStreamWriter.InitFromInmemoryPart 2022-12-03 22:47:06 -08:00
search.go lib/{mergeset,storage}: do not slow down concurrently executed queries during assisted merges 2023-01-16 14:45:40 -08:00
search_test.go app/vmselect: optimize /api/v1/series a bit for time ranges smaller than one day 2022-06-28 12:55:20 +03:00
storage.go lib/storage: check for free disk space before opening tables (#4035) 2023-04-01 00:31:32 -07:00
storage_test.go lib/storage: fixes finalDedup for backfilled data (#3737) 2023-02-01 09:57:02 -08: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: fix collect downsampling metrics (#489) 2023-03-19 23:34:33 -07:00
table_search.go lib/storage: do not pass retentionMsecs and isReadOnly args explicitly - access them via Storage arg 2022-10-24 01:32:56 +03:00
table_search_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
table_search_timing_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
table_test.go lib/storage: do not pass retentionMsecs and isReadOnly args explicitly - access them via Storage arg 2022-10-24 01:32:56 +03:00
table_timing_test.go lib/storage: use deterministic random generator in tests 2023-01-23 20:12:32 -08:00
tag_filters.go lib/storage: optimize matching speed for non-trivial regexp filters 2022-10-01 12:07:18 +03:00
tag_filters_test.go lib/regexutil: add Simplify() function for simplifying the regular expression 2022-08-26 11:57:43 +03:00
tag_filters_timing_test.go lib/regexutil: add Simplify() function for simplifying the regular expression 2022-08-26 11:57:43 +03:00
time.go all: readability improvements for query traces 2022-06-30 18:19:43 +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