From 62d232693308af6b559ef46182857071a70a1862 Mon Sep 17 00:00:00 2001 From: Yiorgis Gozadinos Date: Wed, 24 Jun 2026 10:08:25 +0300 Subject: [PATCH] Use single-threaded zstd compressor --- CHANGELOG.md | 4 ++++ haiku_rag_slim/haiku/rag/store/compression.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e4dfce5..a9e5f3ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog ## [Unreleased] +### Fixed + +- zstd compression uses a fresh `zstandard` compressor/decompressor per call instead of shared module-level singletons, fixing process segfaults when ingester workers compress documents concurrently (Python < 3.14). + ## [0.61.0] - 2026-06-23 ### Added diff --git a/haiku_rag_slim/haiku/rag/store/compression.py b/haiku_rag_slim/haiku/rag/store/compression.py index 1d18dd10..2202cba8 100644 --- a/haiku_rag_slim/haiku/rag/store/compression.py +++ b/haiku_rag_slim/haiku/rag/store/compression.py @@ -17,7 +17,7 @@ except ImportError: # _prepare_document_from_docling), so construct a fresh instance per call # rather than sharing a module-level singleton. def _zstd_compress(data: bytes) -> bytes: - return ZstdCompressor(threads=-1).compress(data) + return ZstdCompressor().compress(data) def _zstd_decompress(data: bytes) -> bytes: content_size = get_frame_parameters(data).content_size