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

Make sure the order for location in ENTERING_MAINTENANCE state

    XMLWordPrintableJSON

Details

    • Reviewed

    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

              tomscut Tao Li
              tomscut Tao Li
              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