[ 
https://issues.apache.org/jira/browse/HADOOP-6345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12776047#action_12776047
 ] 

Matt Ahrens commented on HADOOP-6345:
-------------------------------------

At a quick glance, i see 9 different paths....here they are with exit condition 
and return value (or exception thrown):

1) interval set to 0 (trash feature disabled), EXIT: return false
2) path to move to trash doesn't exist, EXIT: FileNotFoundException
3) path to move to trash already in trash, EXIT: return false
4) path to move to trash contains trash path, EXIT: IOException
5) mkdirs() on base trash path fails, EXIT: return false
6) mkdirs() throws exception, EXIT: IOException
7) rename() throws exception, EXIT: IOException
8) rename() fails, EXIT: IOException
9) rename() succeeds, EXIT: return true

It might make sense to have only #1 return false and the others returning false 
(#3, #5) instead return exceptions with specific info on failure cause.

> Refactor Trash::moveToTrash() and its accompanying poor tests
> -------------------------------------------------------------
>
>                 Key: HADOOP-6345
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6345
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs
>            Reporter: Jakob Homan
>
> We've had several issues relating to the Trash and its access via the shell, 
> none of which were picked up by the unit tests.  The current moveToTrash 
> method has 8 different ways it can terminate and sometimes uses a false value 
> and sometimes uses an exception to indicate failure.  This method should be 
> refactored to improve readability and testability, and new tests written to 
> exercise all possible code paths.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to