-
Notifications
You must be signed in to change notification settings - Fork 211
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bug(python): create_table() Fails on exFAT filesystem on Windows #1231
Comments
The crux of Lance's "inter-process transaction model" is the ability to do a "copy if not exists" operation on the filesystem. If two writers are competing to make a change, and both run "copy if not exists", then only one must succeed. For a local filesystem, this translates to Rust's
It sounds like hard links are not supported on the exFAT filesystem, which explains the error you are getting. Unfortunately, this does mean that you will need to find some other mechanism for transaction control. This is the same situation we have in S3 which also does not support an atomic "copy if not exists" operation. We have, in lance (not yet in lancedb), the ability to specify a custom commit handler to work around this limitation (e.g. we often use dynamodb + s3 so that dynamodb can provide the inter-process atomic commit and s3 provides the storage). I think the solution will have two parts:
|
Do you have any plans to fix this issue @westonpace? LanceDB fiftyone integration doesn't work because of this problem: voxel51/fiftyone#4404 |
@fcakyon I think, at a minimum, exposing the commit handler to lancedb would be a good idea, as this would allow users to supply their own external locking mechanism. This is on our 2024 roadmap but I don't have any immediate plans to work on it. |
LanceDB version
0.6.8
What happened?
I have NTFS and exFAT drives on my Windows 10 device. There seems to be an issue with only the exFAT drives. NTFS has no issues running the same, very basic test code. I have tried using Python 3.10 and 3.12. Both have the same issue.
The error that results is:
Are there known steps to reproduce?
In a fresh virtual environment:
Then run this test script with the 'uri' variable pointed to a location on an exFAT formatted drive.
It should fail on the call to db.create_table()
The text was updated successfully, but these errors were encountered: