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

Konstantin Shvachko commented on HDFS-10301:
--------------------------------------------

Hey Colin, I reviewed your patch more thoroughly. There is still a problem with 
interleaving reports. See {{updateBlockReportContext()}}. Suppose that block 
reports interleave like this: <br1-s1, br2-s1, br1-s2, br2-s2>. Then br1-s2 
will reset {{curBlockReportRpcsSeen}} since {{curBlockReportId}} is not the 
same as in the report, which will discard the bit set for s1 in br2-s1, and the 
count of {{rpcsSeen = 0}} will be wrong for br2-s2. So possibly unreported 
(zombie) storages will not be removed. LMK if you see what I see.

> BlockReport retransmissions may lead to storages falsely being declared 
> zombie if storage report processing happens out of order
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-10301
>                 URL: https://issues.apache.org/jira/browse/HDFS-10301
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 2.6.1
>            Reporter: Konstantin Shvachko
>            Assignee: Colin Patrick McCabe
>            Priority: Critical
>         Attachments: HDFS-10301.002.patch, HDFS-10301.003.patch, 
> HDFS-10301.01.patch, zombieStorageLogs.rtf
>
>
> When NameNode is busy a DataNode can timeout sending a block report. Then it 
> sends the block report again. Then NameNode while process these two reports 
> at the same time can interleave processing storages from different reports. 
> This screws up the blockReportId field, which makes NameNode think that some 
> storages are zombie. Replicas from zombie storages are immediately removed, 
> causing missing blocks.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to