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

Colin P. McCabe commented on HDFS-10301:
----------------------------------------

I apologize for the delays in reviewing.  I am looking at HDFS-10301.007.patch. 
 Is this the latest patch?

I don't understand the purpose behind {{BlockListAsLongs#isStorageReportOnly}}. 
 This function is never called.  This state doesn't seem to be stored anywhere 
in what is sent over the wire, either.  Is this an idea that was 
half-implemented, or did I miss something?

{code}
      if (blocks != BlockListAsLongs.STORAGE_REPORT_ONLY) {
{code}
Again, this is comparing by object reference equality not deep equality.  This 
is comment I also made in the last review that wasn't addressed.

My comment earlier is that I didn't want to overload block reports to be 
storage reports.  A storage report is not a kind of block report.  They 
shouldn't be using the same protobuf objects or Java data structures.  This 
isn't addressed in the current patch, which continues the confusing practice of 
using the same data structure for both.

bq. 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.

The set of storages that the DN reports can change for a variety of reasons, 
most of which are not hotswap related.  One reason is because a drive has 
become bad and got kicked out of the set of currently active volumes.  Another 
reason is because the DN got taken down by the administrator, a volume got 
removed, and the DN was brought back up.  It's rather frustrating that your 
patch doesn't support zombie storage removal during upgrade, and mine does, and 
yet [~shv] is blocking my patch.

> 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.007.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