From 60c3bef1e87ec421ff1ec04b0f539b636f09a83a Mon Sep 17 00:00:00 2001 From: Snezhkko Date: Sun, 1 Feb 2026 22:12:51 +0200 Subject: [PATCH] fix(zstd): use transaction dictionary for tx compressor (#21382) --- crates/storage/zstd-compressors/src/lib.rs | 34 +++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/crates/storage/zstd-compressors/src/lib.rs b/crates/storage/zstd-compressors/src/lib.rs index 28f6259c25..776bb23324 100644 --- a/crates/storage/zstd-compressors/src/lib.rs +++ b/crates/storage/zstd-compressors/src/lib.rs @@ -60,7 +60,8 @@ mod locals { /// Fn creates tx [`Compressor`] pub fn create_tx_compressor() -> Compressor<'static> { - Compressor::with_dictionary(0, RECEIPT_DICTIONARY).expect("Failed to instantiate tx compressor") + Compressor::with_dictionary(0, TRANSACTION_DICTIONARY) + .expect("Failed to instantiate tx compressor") } /// Fn creates tx [`Decompressor`] @@ -148,3 +149,34 @@ impl ReusableDecompressor { } } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn tx_roundtrip_compression() { + let data: Vec = (0u8..=255).collect(); + + let mut compressor = create_tx_compressor(); + let compressed = compressor.compress(&data).expect("compress tx"); + + let mut decompressor = create_tx_decompressor(); + let decompressed = decompressor.decompress(&compressed); + + assert_eq!(decompressed, &*data); + } + + #[test] + fn receipt_roundtrip_compression() { + let data: Vec = (0u8..=255).rev().collect(); + + let mut compressor = create_receipt_compressor(); + let compressed = compressor.compress(&data).expect("compress receipt"); + + let mut decompressor = create_receipt_decompressor(); + let decompressed = decompressor.decompress(&compressed); + + assert_eq!(decompressed, &*data); + } +}