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

Colin Patrick McCabe commented on HDFS-10301:
---------------------------------------------

Hi [~redvine],

Thanks for your interest in this.  I wish I could get more people interested in 
this JIRA-- it has been hard to raise interest, unfortunately.

Just to clarify, you don't need to assign a JIRA to yourself in order to post a 
patch or suggest a solution.  In general, when someone is actively working on a 
patch, you should ask before reassigning their JIRAs to yourself.

A whole separate RPC just for reporting the storages which are present seems 
excessive.  It will add additional load to the namenode.

{code}
     if (node.leaseId == 0) {
-      LOG.warn("BR lease 0x{} is not valid for DN {}, because the DN " +
-               "is not in the pending set.",
-               Long.toHexString(id), dn.getDatanodeUuid());
-      return false;
+      LOG.debug("DN {} is not in the pending set because BR with lease 0x{} 
was processed out of order",
+          dn.getDatanodeUuid(), Long.toHexString(id));
+      return true;
{code}
The leaseId being 0 doesn't mean that the block report was processed out of 
order.  If you manually trigger a block report with the {{hdfs dfsadmin 
\-triggerBlockReport}} command, it will also have lease id 0.  Legacy block 
reports will also have lease ID 0.

In general, your solution doesn't fix the problem during upgrade and is a much 
bigger patch, which is why I think HDFS-10301.003.patch should be committed and 
the RPC changes should be done in a follow-on JIRA.  I do not see us 
backporting RPC changes to all the stable branches.

> 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.004.patch, HDFS-10301.01.patch, HDFS-10301.sample.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)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to