[ 
https://issues.apache.org/jira/browse/HADOOP-18444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xing Lin updated HADOOP-18444:
------------------------------
    Description: 
Trash.moveToAppropriateTrash is used by _hadoop cli -rm_ and hive, to move 
files to trash. However, its current implementation does not support localized 
trash policy we added to ViewFileSystem in HADOOP-18144.

The reason is in moveToAppropriateTrash, it first resolves a path and then uses 
the resolvedFs, to initialize the trash. As a result, it uses getTrashRoot() 
implementation from targetFs, not ViewFileSystem. The new localized trash 
policy we implemented in ViewFileSystem is not invoked.

With the new localized trash policy for ViewFileSystem, the trash root would be 
local to a mount point, thus, for ViewFileSystem with this flag turned on, 
there is no need to resolve the path in moveToAppropriateTrash. Rename in 
ViewFileSystem can resolve the logical paths correctly and be able to move a 
file to trash within a mount point. 

Code section of current moveToAppropriateTrash implementation.
{code:java}
public static boolean moveToAppropriateTrash(FileSystem fs, Path p,
    Configuration conf) throws IOException {
  Path fullyResolvedPath = fs.resolvePath(p);
  FileSystem fullyResolvedFs =
      FileSystem.get(fullyResolvedPath.toUri(), conf);
  ...
  Trash trash = new Trash(fullyResolvedFs, conf);
  return trash.moveToTrash(fullyResolvedPath);
}{code}

  was:
Trash.moveToAppropriateTrash is used by _hadoop cli -rm_ and hive, to move 
files to trash. However, its current implementation does not support localized 
trash policy we added to ViewFileSystem in HADOOP-18144.

The reason is in moveToAppropriateTrash, it first resolves a path and then uses 
the resolvedFs, to initialize the trash. As a result, it uses getTrashRoot() 
implementation from targetFs, not ViewFileSystem. The new localized trash 
policy we implemented in ViewFileSystem is not invoked. With the new localized 
trash policy for ViewFileSystem, the trash root would be local to a mount 
point, thus, for ViewFileSystem with this flag turned on, there is no need to 
resolve the path in moveToAppropriateTrash. Rename in ViewFileSystem can 
resolve the logical paths correctly and be able to move a file to trash within 
a mount point. 

Code section of current moveToAppropriateTrash implementation.
{code:java}
public static boolean moveToAppropriateTrash(FileSystem fs, Path p,
    Configuration conf) throws IOException {
  Path fullyResolvedPath = fs.resolvePath(p);
  FileSystem fullyResolvedFs =
      FileSystem.get(fullyResolvedPath.toUri(), conf);
  ...
  Trash trash = new Trash(fullyResolvedFs, conf);
  return trash.moveToTrash(fullyResolvedPath);
}{code}


> Add Support for localized trash for ViewFileSystem in 
> Trash.moveToAppropriateTrash
> ----------------------------------------------------------------------------------
>
>                 Key: HADOOP-18444
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18444
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: Xing Lin
>            Assignee: Xing Lin
>            Priority: Major
>
> Trash.moveToAppropriateTrash is used by _hadoop cli -rm_ and hive, to move 
> files to trash. However, its current implementation does not support 
> localized trash policy we added to ViewFileSystem in HADOOP-18144.
> The reason is in moveToAppropriateTrash, it first resolves a path and then 
> uses the resolvedFs, to initialize the trash. As a result, it uses 
> getTrashRoot() implementation from targetFs, not ViewFileSystem. The new 
> localized trash policy we implemented in ViewFileSystem is not invoked.
> With the new localized trash policy for ViewFileSystem, the trash root would 
> be local to a mount point, thus, for ViewFileSystem with this flag turned on, 
> there is no need to resolve the path in moveToAppropriateTrash. Rename in 
> ViewFileSystem can resolve the logical paths correctly and be able to move a 
> file to trash within a mount point. 
> Code section of current moveToAppropriateTrash implementation.
> {code:java}
> public static boolean moveToAppropriateTrash(FileSystem fs, Path p,
>     Configuration conf) throws IOException {
>   Path fullyResolvedPath = fs.resolvePath(p);
>   FileSystem fullyResolvedFs =
>       FileSystem.get(fullyResolvedPath.toUri(), conf);
>   ...
>   Trash trash = new Trash(fullyResolvedFs, conf);
>   return trash.moveToTrash(fullyResolvedPath);
> }{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to