hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kihwal Lee (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HDFS-4937) ReplicationMonitor can infinite-loop in BlockPlacementPolicyDefault#chooseRandom()
Date Tue, 03 Nov 2015 23:15:28 GMT

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

Kihwal Lee edited comment on HDFS-4937 at 11/3/15 11:14 PM:
------------------------------------------------------------

Actually the patch I wrote 2 years ago and the rebased one are correct. My subsequent attempt
to "improve" it was based on my recent incorrect understanding of the patch. Now I remember
why I did that way.

After a sufficient number of random, potentially duplicate picking is tried, the total candidate
node count is refreshed. The refreshed number will not include what is already tried and excluded,
so it is truly the remaining candidate node count based on the list of nodes that it already
tried and the latest network topology.  The loop will continue until all candidate nodes are
exhausted or enough number of replicas are picked.

Resubmitting v1, the rebased original patch.


was (Author: kihwal):
Actually the patch I wrote 2 years ago and the rebased one are correct. My subsequent attempt
to "improve" it was based on my recent incorrect misunderstanding of the patch. Now I remember
why I did that way.

After a sufficient number of random, potentially duplicate picking is tried, the total candidate
node count is refreshed. The refreshed number will not include what is already tried and excluded,
so it is truly the remaining candidate node count based on the list of nodes that it already
tried and the latest network topology.  The loop will continue until all candidate nodes are
exhausted or enough number of replicas are picked.

Resubmitting v1, the rebased original patch.

> ReplicationMonitor can infinite-loop in BlockPlacementPolicyDefault#chooseRandom()
> ----------------------------------------------------------------------------------
>
>                 Key: HDFS-4937
>                 URL: https://issues.apache.org/jira/browse/HDFS-4937
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 2.0.4-alpha, 0.23.8
>            Reporter: Kihwal Lee
>            Assignee: Kihwal Lee
>              Labels: BB2015-05-TBR
>         Attachments: HDFS-4937.patch, HDFS-4937.v1.patch, HDFS-4937.v1.patch, HDFS-4937.v2.patch,
HDFS-4937.v3.patch
>
>
> When a large number of nodes are removed by refreshing node lists, the network topology
is updated. If the refresh happens at the right moment, the replication monitor thread may
stuck in the while loop of {{chooseRandom()}}. This is because the cached cluster size is
used in the terminal condition check of the loop. This usually happens when a block with a
high replication factor is being processed. Since replicas/rack is also calculated beforehand,
no node choice may satisfy the goodness criteria if refreshing removed racks. 
> All nodes will end up in the excluded list, but the size will still be less than the
cached cluster size, so it will loop infinitely. This was observed in a production environment.



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

Mime
View raw message