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

Kihwal Lee commented on HDFS-6622:
----------------------------------

The reason I added the strict check was to prevent incorrect operations based 
on potentially incorrect result from getFullPathName(). If the inode's parent 
is not null (stale), but one of the ancestor's parent is null, it will assume 
that inode is directly under "/". This could happen with the delayed inode 
removal.  But since we are going to remove inodes from inodeMap while holding 
FSNamesystem write lock, this should not happen.  So what you suggest will be 
sufficient.

I also wanted to reduce the number of times getFullPathName() is called. I will 
simply remove the comparison and fix the test to check the correctness of edit.


> Rename and AddBlock may race and produce invalid edits
> ------------------------------------------------------
>
>                 Key: HDFS-6622
>                 URL: https://issues.apache.org/jira/browse/HDFS-6622
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.5.0
>            Reporter: Kihwal Lee
>            Priority: Blocker
>         Attachments: HDFS-6622.patch, HDFS-6622.v2.patch
>
>
> While investigating HDFS-6618, we have discovered that rename happening in 
> the middle of {{getAdditionalBlock()}} can lead to logging of invalid edit 
> entry.
> In  {{getAdditionalBlock()}} , the path is resolved once while holding the 
> read lock and the same resolved path will be used in the edit log in the 
> second half of the method holding the write lock.  If a rename happens in 
> between two locks, the path may no longer exist. 
> When replaying the {{AddBlockOp}}, it will fail with FileNotFound.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to