[ 
https://issues.apache.org/jira/browse/HDFS-4937?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kihwal Lee updated HDFS-4937:
-----------------------------

    Description: 
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.

  was:
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 has been seen in 
a production environment.

    
> 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
>
> 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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to