lib/logstorage: make sure that the number of output (bloom, values) shards is bigger than zero.

If the number of output (bloom, values) shards is zero, then this may lead to panic
as shown at https://github.com/VictoriaMetrics/VictoriaMetrics/issues/7391 .

This panic may happen when parts with only constant fields with distinct values are merged into
output part with non-constant fields, which should be written to (bloom, values) shards.
This commit is contained in:
Aliaksandr Valialkin 2024-10-30 13:37:27 +01:00
parent 258ee93fd1
commit 102e9d4f4e
No known key found for this signature in database
GPG key ID: 52C003EE2BCDB9EB
2 changed files with 6 additions and 1 deletions

View file

@ -15,6 +15,8 @@ according to [these docs](https://docs.victoriametrics.com/victorialogs/quicksta
## tip
* BUGFIX: fix `runtime error: index out of range [0] with length 0` panic during low-rate data ingestion. The panic has been introduced in [v0.38.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v0.38.0-victorialogs). See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/7391).
## [v0.38.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v0.38.0-victorialogs)
Released at 2024-10-29

View file

@ -312,7 +312,10 @@ func (bsw *blockStreamWriter) MustInitForFilePart(path string, nocache bool, blo
func adjustBloomValuesShardsCount(n uint64) uint64 {
if n == 0 {
return n
// At least a single shard is needed for writing potential non-const fields,
// which can appear after merging of const fields.
// This fixes https://github.com/VictoriaMetrics/VictoriaMetrics/issues/7391
return 1
}
n = 1 << bits.Len64(n-1)