[ https://issues.apache.org/jira/browse/HDFS-4842?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jing Zhao updated HDFS-4842: ---------------------------- Attachment: HDFS-4842.000.patch Initial patch just for review. The idea is that we need to track upwards in the src tree to identify the prior snapshot. The non-trivial part here is that we may hit another reference node when tracking upwards. In that case, I think we should use the first WithName node whose lastSnapshotId is no less than the id of the to-be-deleted snapshot. The patch contains a simple test to regenerate the scenario in the description, which cannot pass without the fix. The patch still need further code clean and more unit tests to cover the scenario where multiple reference nodes are hit along the way upwards. > Snapshot: identify the correct prior snapshot when deleting a snapshot under > a renamed subtree > ---------------------------------------------------------------------------------------------- > > Key: HDFS-4842 > URL: https://issues.apache.org/jira/browse/HDFS-4842 > Project: Hadoop HDFS > Issue Type: Sub-task > Affects Versions: 3.0.0 > Reporter: Jing Zhao > Assignee: Jing Zhao > Attachments: HDFS-4842.000.patch > > > In our long-term running tests for snapshot we find the following bug: > 1. initially we have directories /test, /test/dir1 and /test/dir2/foo. > 2. first take snapshot s0 and s1 on /test. > 3. modify some descendant of foo (e.g., delete foo/bar/file), to make sure > some changes have been recorded to the snapshot diff associated with s1. > 4. take snapshot s2 on /test/dir2 > 5. move foo from dir2 to dir1, i.e., rename /test/dir2/foo to /test/dir1/foo > 6. delete snapshot s1 > After step 6, the snapshot copy of foo/bar/file should have been merged from > s1 to s0 (i.e., s0 should be identified as the prior snapshot of s1). > However, the current code failed to identify the correct prior snapshot in > the source tree of the rename operation and wrongly used s2 as the prior > snapshot. > The bug only exists when nested snapshottable directories are enabled. To fix > the bug, we need to go upwards in the source tree of the rename operation > (i.e., dir2) to identify the correct prior snapshot in the above scenario. > This jira will fix the bug and add several corresponding unit tests. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira