Skip to content
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

Local: implement Put in an atomic, isolated, and durable way #220

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

urisimchoni
Copy link
Contributor

This fixes #219
One commit works around what I believe is an issue with the Go standard library, namely that os.Walk would report an error if readdir found a file and lstat fails with EEXIST - this may very well happen if the file got deleted between the readdir and the lstat.

@urisimchoni
Copy link
Contributor Author

The filepath.Walk patch works around this Go issue:
golang/go#24959

The local interface mimics object store, so PUT
operations should not be visible to other readers
until they are complete.
On Unix systems, Go's os.Walk involves a readdir() followed by
an lstat() of each file found. Between those, the file may be
deleted - this should not fail the entire operation of listing
container's content.
@urisimchoni
Copy link
Contributor Author

rebased on master

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Local implementation is not atomic, isolated, durable
1 participant