7 Commits

Author SHA1 Message Date
Robert Pack 8ebe4dd92d refactor: use replace EagerSnapshot with LogDataHandler in conflict checks
Signed-off-by: Robert Pack <robstar.pack@gmail.com>
2025-08-25 07:15:12 -07:00
R. Tyler Croy 5ac08eb1b2 chore: use pytest-xdist for speeding up python tests
The additional benefit of running these tests in parallel is that more
racey/timing related test failures are cropping up for me.

Signed-off-by: R. Tyler Croy <rtyler@brokenco.de>
2025-07-30 09:38:59 +00:00
R. Tyler Croy c8c304af6c fix: allow writing to DeltaTable objects across Python threads
FREEZE!

Looks like we were _really_ close to full multi-threaded support before,
and just needed to sprinkle a little macro magic on the pyclass
definition.

See [pyo3 docs](https://pyo3.rs/v0.23.0/class/thread-safety)

Fixes #3594

Signed-off-by: R. Tyler Croy <rtyler@brokenco.de>
2025-07-24 16:54:06 +00:00
Ion Koutsouris 3197b92da0 chore: add xfail to flaky test
Signed-off-by: Ion Koutsouris <15728914+ion-elgreco@users.noreply.github.com>
2025-05-28 10:56:30 +00:00
Ion Koutsouris 92e75bb217 refactor: move from pyarrow to arro3
Signed-off-by: Ion Koutsouris <15728914+ion-elgreco@users.noreply.github.com>
2025-05-24 19:55:57 +00:00
Ion Koutsouris cede5a8a6d fix: refresh snapshot after vacuuming logs
Signed-off-by: Ion Koutsouris <15728914+ion-elgreco@users.noreply.github.com>
2025-02-25 17:04:09 +00:00
R. Tyler Croy a70559e257 feat: allow multiple Python threads to work with a single DeltaTable instance
This change introduces an internal Mutex inside of RawDeltaTable which
allows the PyO3 bindings to share the Python object between threads at
the Python layer.

PyO3 will raise a `RuntimeError: Already borrowed` for any
function call which takes a mutable reference to `self`. Introducing the
internal Mutex ensures that all function signatures can operate with
just self-references safely.

The Rust-level Mutex is a simple passthrough for most operations which
do not need to modify the underlying state. The critical sections which
typically need to acquire and mutate with a lock are after I/O bound
operations are completed as far as I can tell, so I don't anticipate
deadlock or performance issues.

There is still some cleanup of errors that needs to happen to make the
code here more ergonomic when blending DeltaError with PoisonError from
the lock, as such right now there's a lot of ugly error mapping.

Fixes #2958

Signed-off-by: R. Tyler Croy <rtyler@brokenco.de>
Sponsored-by: Neuralink Corp.
2025-01-04 23:29:38 +00:00