[
https://issues.apache.org/jira/browse/HADOOP-17200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steve Loughran updated HADOOP-17200:
------------------------------------
Fix Version/s: 3.3.1
> Renaming a file under a sibling empty directory doesn't delete dest dir's
> marker
> --------------------------------------------------------------------------------
>
> Key: HADOOP-17200
> URL: https://issues.apache.org/jira/browse/HADOOP-17200
> Project: Hadoop Common
> Issue Type: Sub-task
> Components: fs/s3
> Affects Versions: 3.3.0, 3.2.1, 3.1.3
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Major
> Fix For: 3.3.1
>
>
> This has probably existed for a long time -the fact that nobody has noticed
> is probably just luck.
> Probably came with the *fix* of HADOOP-15079.
> Given
> * a base directory /base
> * A file /base/file
> * an empty directory /base/empty (with empty dir marker)
> * if you rename base/file under base/empty (key: with the dir passed in, not
> the full filename) the file is moved, but the marker /base/empty/ is not
> The issue is that the delete/recreate markers compares src and dest parent
> for equivalence when skipping marker delete, but if the final path of the
> rename is *under* the path "dst" then the comparison is wrong -it must be on
> the parent of the final path, not the path handed to rename()
> {code}
> if (!src.getParent().equals(dst.getParent())) {
> LOG.debug("source & dest parents are different; fix up dir markers");
> deleteUnnecessaryFakeDirectories(dst.getParent());
> maybeCreateFakeParentDirectory(src);
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]