-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
add: support rollback/recovery from partial/failed dvc add #6387
Comments
Related: #6252.
|
As noted by @karajan1001 , we could try to use |
@isidentical Btw, notice how ^^^ is related to our copy/upload/download/link unification discussion 🙂 |
But, the |
@karajan1001 Good point! I meant that we could use hardlink temporarily, just so that we have an easier time rolling back if something goes wrong. |
I'm bumping the priority here, we already have a guideline against breaking the user's workspace, so we need to realize the correct implementation. Another user nearly lost their ~140GB of data. We should take data loss seriously. Even if we don't add a support for transactions (rollback/commit), we should not break user's workspace by moving files to the cache. |
Here's the suggestion on how to recover from a failed
|
Another user on discord running into this: https://discord.com/channels/485586884165107732/485596304961962003/900792694023028766 Also, note that we've stopped poisoning our local cache with .dir, but our staging db is still memory-only, so you are no longer able to recover the metadata 🙁 Unfortunately, we are not ready to make staging persistent right now, and we clearly shouldn't bring back poisoning, so instead we should take a closer look at the approach with trying to reflink/hardlink/copy(in this order and without symlink) instead of moving during |
We don't save |
@skshetry Correct, because that would be poisoning the cache. We keep it in memfs-based staging odb. |
Why would a complete save poison the cache? The original issue was about the partial commit/save poisoning the cache, not the full save iirc. |
@skshetry It is not a complete save though. Complete is when .dir and all files inside of it are all in cache. But before transfer we don't have those files, so we can't save .dir before we complete transfering them. The approach I was talking about is about keeping users workspace intact, before and during transfer. Currently we use |
If supported, reflink, will provide the fastest transfer possible. That being said, right now we use `move` in most of the places, which still takes presidence. Pre-requisite for iterative#6387
If supported, reflink, will provide the fastest transfer possible. That being said, right now we use `move` in most of the places, which still takes presidence. Pre-requisite for #6387
Suggestion: at least prioritize to implement a progress bar to show the ETA. Lack of pb was the reason I was interupted the add process. Thanks again for the support for getting the data back. |
A Related case but in |
Seems like this was solved by #6860 for the most part. Let's close for now. |
If the user does a long running dvc add directory that dies somewhere in the middle, there is no obvious (to the user) way to recover from the state where
Currently it's possible to recover from this state manually as long as we have the
.dir
file for the original complete directory, but not in a straightforward waydiscord context https://discord.com/channels/485586884165107732/485596304961962003/872423982463340555
The text was updated successfully, but these errors were encountered: