Home / icechunk-python / faq
Frequently Asked Questions
Why do I have to opt-in to pickling an IcechunkStore or a Session?
Icechunk is different from normal Zarr stores because it is stateful. In a distributed setting, you have to be careful to communicate back the Session objects from remote write tasks, merge them and commit them. The opt-in to pickle is a way for us to hint to the user that they need to be sure about what they are doing. We use pickling because these operations are only tricky once you cross a process boundary. More pragmatically, to_zarr(session.store) fails spectacularly in distributed contexts (e.g. this issue), and we do not want the user to be surprised.
Does icechunk-python
include logging?
Yes! Set the environment variable ICECHUNK_LOG=icechunk=debug
to print debug logs to stdout. Available "levels" in order of increasing verbosity are error
, warn
, info
, debug
, trace
. The default level is error
. The Rust library uses tracing-subscriber
crate. The ICECHUNK_LOG
variable can be used to filter logging following that crate's documentation. For example, ICECHUNK_LOG=trace
will set both icechunk and it's dependencies' log levels to trace
while ICECHUNK_LOG=icechunk=trace
will enable the trace
level for icechunk only.