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

Draft: Add loom simulations of spfs clean data race #1064

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jrray
Copy link
Collaborator

@jrray jrray commented Jul 2, 2024

$ cargo test --bin clean-loom

This shows three variations on how spfs clean can race with writers to a repo.

The first one tries to simulate the existing behavior and the test fails as expected.

The other two demonstrate how a write-ahead log might prevent races. The first one requires the write-ahead log to be locked while reading in all the tags, which in turn would block writes for a significant amount of time.

The second one proposes how the write-ahead log could be pruned over time with a kakfa-like tombstone concept, and only requires the log to be locked while actually deleting files.

In either case, the time while the write-ahead log is locked could early exit in order to not block writers for an extended amount of time. In this way it could make incremental progress by deleting some number of objects in each pass.

    $ cargo test --bin clean-loom

This shows three variations on how `spfs clean` can race with writers to
a repo.

The first one tries to simulate the existing behavior and the
test fails as expected.

The other two demonstrate how a write-ahead log might prevent races. The
first one requires the write-ahead log to be locked while reading in all
the tags, which in turn would block writes for a significant amount of
time.

The second one proposes how the write-ahead log could be pruned over
time with a kakfa-like tombstone concept, and only requires the log to
be locked while actually deleting files.

In either case, the time while the write-ahead log is locked could early
exit in order to not block writers for an extended amount of time. In
this way it could make incremental progress by deleting some number of
objects in each pass.

Signed-off-by: J Robert Ray <jrray@jrray.org>
@jrray jrray added the agenda item Items to be brought up at the next dev meeting label Jul 2, 2024
@jrray jrray self-assigned this Jul 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
agenda item Items to be brought up at the next dev meeting
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant