Description
getNumOfRacks() and getNumOfLeaves() are two high frequencies call methods for BlockPlacementPolicy, this two methods need to get NetworkTopology read lock, and get lock in high frequencies call methods may impact the namenode performance.
This two methods get number of racks and number of leaves just for chooseTarget calculate, lock in these two methods cannot guarantee these two values will not change in the subsequent calculations.
I think it's safe to remove the read lock from this two methods.