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

Jing Zhao commented on HDFS-4351:
---------------------------------

bq. Regarding numOfReplicas, my reading is that it's the # of additional nodes 
that need to be added to the results list. 

Yes. So I think the new numOfReplicas passed into the chooseTarget when a 
NotEnoughReplicasException is thrown should be calculated based on the change 
of the number of nodes in the results list. So it can be either 
"oldNumOfReplicas - (number of new nodes in results)" or "oldNumOfReplicas + 
(initial number of nodes in results) - (current number of nodes in results)".
                
> Fix BlockPlacementPolicyDefault#chooseTarget when avoiding stale nodes
> ----------------------------------------------------------------------
>
>                 Key: HDFS-4351
>                 URL: https://issues.apache.org/jira/browse/HDFS-4351
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 3.0.0
>            Reporter: Andrew Wang
>            Assignee: Andrew Wang
>         Attachments: hdfs-4351-2.patch, hdfs-4351-3.patch, hdfs-4351.patch
>
>
> There's a bug in {{BlockPlacementPolicyDefault#chooseTarget}} with stale node 
> avoidance enabled (HDFS-3912). If a NotEnoughReplicasException is thrown in 
> the call to {{chooseRandom()}}, {{numOfReplicas}} is not updated together 
> with the partial result in {{result}} since it is pass by value. The retry 
> call to {{chooseTarget}} then uses this incorrect value.
> This can be seen if you enable stale node detection for 
> {{TestReplicationPolicy#testChooseTargetWithMoreThanAvaiableNodes()}}.

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