#2178·badger

Zstd Compression Levels Can't Be Changed Across Different `badger.Open()` Calls

Author: jody-frankowskiCreated Mar 3, 2025Updated Jun 21, 2026
LabelsStale

Because the Zstd encoder is initialized only once for the whole program different compression level options (e.g. 1 or 19) aren't respected across different badger instances.

To Reproduce

badgerOptions := badger.DefaultOptions(db1)
badgerOptions = badgerOptions.WithCompression(options.ZSTD)
badgerOptions = badgerOptions.WithZSTDCompressionLevel(1)
db, _ := badger.Open(badgerOptions)

[...]

badgerOptions = badger.DefaultOptions(db2)
badgerOptions = badgerOptions.WithCompression(options.ZSTD)
badgerOptions = badgerOptions.WithZSTDCompressionLevel(19)
db, _ = badger.Open(badgerOptions) // This db instance will also have compression level 1