You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
S3 external outputs are broken for pipelines since 7211bd0 because of a bug in s3fs (and probably in other filesystems). They will only break if running a stage for which an output doesn't already exist. When initializing the stage, DVC will try to remove the nonexistent output and raise a FileNotFound error.
Reproduce
dvc repro will break if there is an external output and that output does not exist yet.
In a new repo, using some <s3_path> that doesn't exist yet, do this:
dvc repro shouldn't fail while removing outputs. In this case, it fails because of what seems like a bug or at least inconsistent behavior in fsspec. Like mentioned in #5961 (comment), output.remove for s3fs and other async filesystems calls _expand_path. When the path doesn't exist and recursive=True, _expand_path raises FileNotFoundError. When recursive=False, it returns the path. It also returns the path for the LocalFileSystem regardless of whether recursive=True, so not sure if it was intended to raise an error only for this specific scenario.
The text was updated successfully, but these errors were encountered:
So @dberenbaum to see if I got it right, is this because fsspec raises FileNotFound error?
I don't know if this is a bug in fsspec or expected behavior
Bug Report
Description
S3 external outputs are broken for pipelines since 7211bd0 because of a bug in s3fs (and probably in other filesystems). They will only break if running a stage for which an output doesn't already exist. When initializing the stage, DVC will try to remove the nonexistent output and raise a
FileNotFound
error.Reproduce
dvc repro
will break if there is an external output and that output does not exist yet.In a new repo, using some
<s3_path>
that doesn't exist yet, do this:Expected
dvc repro
shouldn't fail while removing outputs. In this case, it fails because of what seems like a bug or at least inconsistent behavior in fsspec. Like mentioned in #5961 (comment),output.remove
for s3fs and other async filesystems calls _expand_path. When the path doesn't exist andrecursive=True
,_expand_path
raisesFileNotFoundError
. Whenrecursive=False
, it returns the path. It also returns the path for theLocalFileSystem
regardless of whetherrecursive=True
, so not sure if it was intended to raise an error only for this specific scenario.The text was updated successfully, but these errors were encountered: