-
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
dvc pull: shows wrong error & does not continue when remote is missing .dir content #10111
Comments
Hi, I came across the same issue. It took me hours to figure out why Also, I agree with his comment. It was just 3 weeks ago to came across another bug that broke dvc #10142. It is great that dvc is releasing new versions at least every week, but dvc needs to have a better regression test. |
For the record: can reproduce. It happens because we try to dynamically load collected index, which we shouldn't need to do at that point. Working on a fix... |
Thanks for the feedback, we truly appreciate it. We've accumulated a lot of things over the years that worked well enough in simple scenarios but broke down or was unmanageable in more complex ones (e.g. like cloud versioning support or imports), which resulted in us revisiting the architecture around 3.0 to make things more robust in the mid/longterm. That also includes better messages for multi-stage operations. Unfortunately, the way we've handled it with the resources available resulted in regressions that we are still fixing, not to mention that ui/ux is yet to be cleaned up, even though it now has a more robust architecture behind it that is a foundation for any other improvements. I am personally really sorry that we've let the quality/stability drop and we are trying hard to improve things while also trying to deliver more advanced features like dvcfs that really benefit from the more robust architecture that we have today. @mdekstrand @kbumsik the feedback you folks provide is essential to us, thank you so much for helping improve dvc. |
Bug Report
Description
When a tracked directory has not been pushed to a remote, attempting to pull from that remote fails with an incorrect error message (it reports that the local data is missing, not that the remote data is missing), and fails immediately upon encountering the missing data instead of continuing to fetch available data and summarizing unfetchable data at the end of the run like it (historically) does with missing file content.
Reproduce
Actual Results
Running with
--verbose
shows the original error:dvc pull -r local --verbose
Expected
dvc pull
fails as soon as this error is encountered, instead of continuing to fetch available data and summarizing the unfetchable data at the end, even when--allow-missing
is provided)Environment information
Output of
dvc doctor
:Additional Information (if any):
This specific bug seems like it could easily cause more serious repository-wedging problems in the following unfortunate scenario:
.dir
record is pushed.In this case, it will be impossible to
dvc pull
the current repository to get the pieces that are available in order to fill in the rest with anotherdvc repro
, without doing surgery to remove thedvc.lock
entries that reference the unfetchable directory content. One could argue that pushing to git before dvc is bad practice, but a situation where the dvc repository can no longer even try to fetch content because the only copy of the fetched content is on a dead disk seems suboptimal.Finally, a broader context comment — while upgrading several projects from DVC 2.x or early 3.x to recent (3.28 and later?) DVC, it appears to me that the quality of DVC error messages, and robustness to storage errors, has gone down remarkably; from the stack traces, it looks like errors often happen at the new
dvc-data
layer, but propagate upwards in a way that causes the user-facing layer to misattribute their cause in the primary error message (for example, reporting an “unexpected error” in this case for a subclass of the condition of a remote not having all the data dvc expects to fetch). See also #10076, for example, or #10065 (which was not quite the same problem but also seemed to be a species of errors manifesting as unrelated-looking problems, at least in its user-visible effects). This is very frustrating, and it also makes it harder for me to teach others how to use DVC when the error messages do not accurately and actionably report the errors encountered. It also seems to be a serious regression from earlier versions of DVC, where storage errors were more directly reported and the software recovered more reliably (in my experience, at least, using it primarily in a non-cloud environment).The text was updated successfully, but these errors were encountered: