[ https://issues.apache.org/jira/browse/ARROW-9121?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17142176#comment-17142176 ]
Neal Richardson commented on ARROW-9121: ---------------------------------------- Is it expected that people will use Arrow for the purpose of deleting the contents of their file system? Or is it more likely that this would be a (terrible) accident? I tend to agree that "delete everything" is dangerous as a default. Would a compromise solution be to leave the C++ library as is and put up (more) guardrails in pyarrow, the R package, etc., where we might expect a user to type something they don't mean? > [C++] Do not wipe the filesystem when path is empty > --------------------------------------------------- > > Key: ARROW-9121 > URL: https://issues.apache.org/jira/browse/ARROW-9121 > Project: Apache Arrow > Issue Type: Bug > Components: C++ > Reporter: Mohamed Zenadi > Assignee: Krisztian Szucs > Priority: Minor > Fix For: 1.0.0 > > > The `DeleteDirContents` method in the filesystems api has a default behavior > or *wiping* the whole filesystem if we give it an empty path. > > It's documented as: > > Like DeleteDir, but doesn’t delete the directory itself. Passing an empty > path (“”) will wipe the entire filesystem tree. > > And the corresponding code confirms that: > {code:java} > auto parts = SplitAbstractPath(path); > RETURN_NOT_OK(ValidateAbstractPathParts(parts)); > > if (parts.empty()) { > // Wipe filesystem > impl_->RootDir().entries.clear(); > return Status::OK(); > } > {code} > > This is a weird default that does not make sense. If the user wanted really > to wipe his filesystem, he'd pass a `/`. > -- This message was sent by Atlassian Jira (v8.3.4#803005)