ZSTD compresion with dictionary causes odd errors
- Ngôn ngữ chính
- Python
- Star
- 211
- Fork
- 58
- Merge trung bình
- 1 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 6
Mô tả
When activating the "use_dict" flag in an SChunk instance, storing data leads to errors.
The following code does not execute on my system:
```
import blosc2
import numpy as np
CHUNKSIZE = int(2**12)
NCHUNKS = 5
coptions = blosc2.cparams_dflts.copy()
coptions["codec"] = blosc2.Codec.ZSTD # this is already the default
coptions["use_dict"] = 1
_rng = np.random.default_rng()
def _make_data() -> bytes:
return _rng.random(CHUNKSIZE // 4, dtype=np.float32).tobytes()
data = [_make_data() for x in range(NCHUNKS)]
storage = blosc2.SChunk(
chunksize=CHUNKSIZE, cparams=coptions, dparams=blosc2.dparams_dflts
)
for x in data:
storage.append_data(x)
for index, x in enumerate(data):
assert storage.decompress_chunk(index) == x
```
Instead, it leads to the following `RuntimeError`:
```
Traceback (most recent call last):
File "/home/user/minimal_bug.py", line 26, in
storage.append_data(x)
File "/home/user/env/lib/python3.9/site-packages/blosc2/schunk.py", line 298, in append_data
return super(SChunk, self).append_data(data)
File "blosc2_ext.pyx", line 1105, in blosc2.blosc2_ext.SChunk.append_data
RuntimeError: Could not append the buffer
```
If the above code is run with `coptions["use_dict"] = 0`, it executes successfully.
Do specific flags need to be set for shared dictionary compression to be successful, or does the sizing of stored data have different requirements?
python-blosc2 version: `blosc2==2.3.2`
python version: `3.9.18`
platform: arch linux, conda based python install
Hướng dẫn đóng góp
Hướng nghiên cứu
Tái hiện script tối thiểu được cung cấp với python-blosc2 2.3.2 và kiểm tra SChunk.append_data trong schunk.py cùng với đường dẫn traceback trong blosc2_ext.pyx. Xác định lý do use_dict=1 từ chối các chunk này, sau đó xác minh rằng việc nối thêm cả năm buffer và giải nén từng buffer đều thành công khi bật dictionary.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- data
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 28/100