Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 2.6.0, 2.7.0, 2.8.0
    • None
    • net
    • None

    Description

      NetworkTopology.isAncestor is called in NetworkTopology.getLeaf, which is excessively used in block placement policies (chooseRandom for example).

      Currently, the implementation calls getPath twice. And getPath performs string concatenation on the fly. On a busy NameNode, this introduces more GC pressure and CPU overhead for block allocation.
      Given that network location and node name does not generally change frequently, we can cache path as a properly of Node and update accordingly while network location or node name is changing.
      Also, one of these getPath calls in getLeaf can be eliminated because we are expecting identical result in both calls.

      Attachments

        Activity

          There are no comments yet on this issue.

          People

            Unassigned Unassigned Assign to me
            He Tianyi He Tianyi

            Dates

              Created:
              Updated:

              Slack

                Issue deployment