Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-16057

Make sure the order for location in ENTERING_MAINTENANCE state

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.4.0, 3.3.2
    • Component/s: None

      Description

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

      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());
      }
      

       

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                tomscut tomscut
                Reporter:
                tomscut tomscut
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 50m
                  1h 50m