tomscut created HDFS-16057:
------------------------------

             Summary: Make sure the order for location in ENTERING_MAINTENANCE 
state
                 Key: HDFS-16057
                 URL: https://issues.apache.org/jira/browse/HDFS-16057
             Project: Hadoop HDFS
          Issue Type: Bug
            Reporter: tomscut
            Assignee: tomscut


We use compactor to sort locations in getBlockLocations(), and the expected 
result is: live -> stale -> entering_maintenance -> decommissioned.

But the networktopology. SortByDistance() will disrupt the order. We should 
also filtered out node in sate  AdminStates.ENTERING_MAINTENANCE before 
networktopology. SortByDistance().

 

org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager#sortLocatedBlock()
{code:java}
DatanodeInfoWithStorage[] di = lb.getLocations();
// Move decommissioned/stale datanodes to the bottom
Arrays.sort(di, comparator);

// Sort nodes by network distance only for located blocks
int lastActiveIndex = di.length - 1;
while (lastActiveIndex > 0 && isInactive(di[lastActiveIndex])) {
  --lastActiveIndex;
}
int activeLen = lastActiveIndex + 1;
if(nonDatanodeReader) {
  networktopology.sortByDistanceUsingNetworkLocation(client,
      lb.getLocations(), activeLen, createSecondaryNodeSorter());
} else {
  networktopology.sortByDistance(client, lb.getLocations(), activeLen,
      createSecondaryNodeSorter());
}
{code}
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to