VictoriaMetrics/lib/mergeset
Zakhar Bessarab 47d9e82b52
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:18:21 +02:00
..
block_header.go lib/mergeset: properly reset bsr.bhIdx after the call to blockStreamReader.readNextBHS() 2022-11-16 21:22:51 +02:00
block_stream_reader_test.go lib/mergeset: use deterministic random generator in tests 2023-01-23 19:44:10 -08:00
block_stream_reader.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:47:20 -07:00
block_stream_writer.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:47:20 -07:00
encoding_test.go lib/mergeset: use deterministic random generator in tests 2023-01-23 19:44:10 -08:00
encoding_timing_test.go lib/mergeset: fix data race in BenchmarkInmemoryBlockMarshal 2023-01-23 19:44:07 -08:00
encoding.go app,lib: fix typos in comments (#3804) 2023-02-13 09:32:35 -08:00
filenames.go lib/mergeset: consistently use OS-independent separator in file paths 2023-03-25 14:34:33 -07:00
inmemory_part.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:47:20 -07:00
merge_test.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:47:20 -07:00
merge.go lib/mergeset: do not update blockStreamReader.bh.firstItem during the merge 2022-07-28 00:05:43 +03:00
metaindex_row.go all: subsitute ioutil.ReadAll with io.ReadAll 2022-08-22 00:16:04 +03:00
part_header.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:47:20 -07:00
part_search_test.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:47:20 -07:00
part_search.go lib/mergeset: skip common prefix in binarySearchKey() function 2023-07-13 22:05:14 -07:00
part.go lib/{storage,mergeset}: convert InitFromFilePart to MustInitFromFilePart 2023-04-14 15:47:20 -07:00
table_search_test.go lib/fs: add MustReadDir() function 2023-04-14 22:11:40 -07:00
table_search_timing_test.go lib/fs: add MustReadDir() function 2023-04-14 22:11:40 -07:00
table_search.go optimized code (#2103) 2022-01-28 12:10:47 +02:00
table_test.go lib/mergeset: close and open the table before making snapshots at TestTableCreateSnapshotAt() 2023-05-16 15:32:34 -07:00
table.go lib/storage/partition: add check to ensure parts exist on disk (#5017) 2023-09-19 11:18:21 +02:00