[ 
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)

Reply via email to