[
https://issues.apache.org/jira/browse/HDFS-16057?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Takanobu Asanuma resolved HDFS-16057.
-------------------------------------
Fix Version/s: 3.3.2
3.4.0
Resolution: Fixed
> 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
> Priority: Minor
> Labels: pull-request-available
> Fix For: 3.4.0, 3.3.2
>
> Time Spent: 1h 20m
> Remaining Estimate: 0h
>
> We use comparator 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: [email protected]
For additional commands, e-mail: [email protected]