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

Vinitha Reddy Gankidi commented on HDFS-10301:
----------------------------------------------

Thanks for the review Colin. I have addressed your comments below:
{quote}
This won't work in the presence of reordered RPCs. If the RPCs are reordered so 
that curRpc 1 arrives before curRpc 0, the lease will be removed and RPC 0 will 
be rejected.
{quote}

If curRpc 1 arrives before curRpc 0, the lease will be removed and 
{{node.leaseId}} will be set to zero. I have modified BlockReportLeaseManager 
to return true when  {{node.leaseId = 0}}. I explained the same in my previous 
comment:
https://issues.apache.org/jira/browse/HDFS-10301?focusedCommentId=15299255&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15299255
Please let me know if you see any issues with this approach.

{quote}
Using object equality to compare two BlockListAsLongs objects is very 
surprising to anyone reading the code.
{quote}
 
I uploaded a new patch (007) to address this issue. I have added a method 
{{isStorageReportOnly()}} to BlockListsAsLongs that returns true only for 
STORAGE_REPORT_ONLY BlockListsAsLong.

In the upgrade case, there is no way to detect the zombie storages since the 
old DNs do not send the information about the storages in the BR in the last 
RPC. In practice, hot-swapping of DN drives and upgrading the DN may not happen 
at the same time. 



> 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: Vinitha Reddy Gankidi
>            Priority: Critical
>         Attachments: HDFS-10301.002.patch, HDFS-10301.003.patch, 
> HDFS-10301.004.patch, HDFS-10301.005.patch, HDFS-10301.006.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: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to