VictoriaMetrics/lib/mergeset
Zakhar Bessarab bea3431ed1
lib/storage/partition: add check to ensure parts exist on disk (#5017)
* lib/storage/partition: add check to ensure parts exist on disk

If part exists in parts.json but is missing on disk there will be a misleading error similar to "unexpected number of substrings in the part name".

This change forces verification of part existence and throws a correct error in case it is missing on disk.

Such issue can be result of https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5005 or disk corruption.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>

* lib/storage/partition: use filepath.Join instead of string concatenation

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>

* lib/storage/partition: add action points for error message

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>

* all: add a check for missing part in lib/mergeset and lib/logstorage

---------

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
Co-authored-by: Aliaksandr Valialkin <valyala@victoriametrics.com>
2023-09-19 11:17:41 +02:00
..
block_header.go lib/mergeset: properly reset bsr.bhIdx after the call to blockStreamReader.readNextBHS() 2022-11-16 21:23:35 +02:00
block_stream_reader_test.go lib/mergeset: use deterministic random generator in tests 2023-01-23 19:43:49 -08:00
block_stream_reader.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:46:12 -07:00
block_stream_writer.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:46:12 -07:00
encoding_test.go lib/mergeset: use deterministic random generator in tests 2023-01-23 19:43:49 -08:00
encoding_timing_test.go lib/mergeset: fix data race in BenchmarkInmemoryBlockMarshal 2023-01-23 19:43:18 -08:00
encoding.go app,lib: fix typos in comments (#3804) 2023-02-13 13:27:13 +01:00
filenames.go lib/mergeset: consistently use OS-independent separator in file paths 2023-03-25 13:39:41 -07:00
inmemory_part.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:46:12 -07:00
merge_test.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:46:12 -07:00
merge.go lib/mergeset: do not update blockStreamReader.bh.firstItem during the merge 2022-07-27 23:05:02 +03:00
metaindex_row.go all: subsitute ioutil.ReadAll with io.ReadAll 2022-08-22 00:16:37 +03:00
part_header.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:46:12 -07:00
part_search_test.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:46:12 -07:00
part_search.go lib/mergeset: skip common prefix in binarySearchKey() function 2023-07-13 22:04:59 -07:00
part.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:46:12 -07:00
table_search_test.go lib/fs: add MustReadDir() function 2023-04-14 22:10:46 -07:00
table_search_timing_test.go lib/fs: add MustReadDir() function 2023-04-14 22:10:46 -07:00
table_search.go optimized code (#2103) 2022-01-28 14:15:41 +02:00
table_test.go lib/mergeset: close and open the table before making snapshots at TestTableCreateSnapshotAt() 2023-05-16 14:55:11 -07:00
table.go lib/storage/partition: add check to ensure parts exist on disk (#5017) 2023-09-19 11:17:41 +02:00