[ 
https://issues.apache.org/jira/browse/HDFS-10756?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15423880#comment-15423880
 ] 

Xiao Chen commented on HDFS-10756:
----------------------------------

Thanks [~yuanbo] for looking into this.
bq. Actually I find that EZ file can not be moved from EZ to a trash directory 
under the same EZ while using hadoop client.
Could you give an example of what you mean by this?
>From CLI, {{hdfs dfs -rm /ez/file}} will rename ({{mv}}) the file to a trash 
>directory (/ez1/.Trash/$USER/file, which is decided using getTrashRoot), and 
>{{hdfs dfs -rm -skipTrash /ez/file}} will permanently delete the file.

The issue I'm reporting here is that, for a webhdfs/httpfs client (imagine a 
Python script accessing hdfs), since the [rest 
API|https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/WebHDFS.html]
 does not support trash, a file can only be deleted permanently. Without EZ, 
the client can workaround this by rename the file into 
{{/user/username/.Trash}}. But EZ restricts such rename operation, and it has 
to be moved to {{/ez1/.Trash/$USER}}, which the client has no way to know. So 
my proposal here is to add {{getTrashRoot}} so webhdfs/httpfs clients know 
where to rename the file to, without worrying about the file being in a EZ or 
not.

An alternate way is to maybe add a {{-moveToTrash}} to the {{delete}} api on 
webhdfs/httpfs, but I'm not sure whether that's feasible.

> Expose getTrashRoot to HTTPFS and WebHDFS
> -----------------------------------------
>
>                 Key: HDFS-10756
>                 URL: https://issues.apache.org/jira/browse/HDFS-10756
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: encryption, httpfs, webhdfs
>            Reporter: Xiao Chen
>
> Currently, hadoop FileSystem API has 
> [getTrashRoot|https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java#L2708]
>  to determine trash directory at run time. Default trash dir is under 
> {{/user/$USER}}
> For an encrypted file, since moving files between/in/out of EZs are not 
> allowed, when an EZ file is deleted via CLI, it calls in to [DFS 
> implementation|https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java#L2485]
>  to move the file to a trash directory under the same EZ.
> This works perfectly fine for CLI users or java users who call FileSystem 
> API. But for users via httpfs/webhdfs, currently there is no way to figure 
> out what the trash root would be. This jira is proposing we add such 
> interface to httpfs and webhdfs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to