HDFS-7858 RequestHedgingProxyProvider was designed to "first simultaneously call multiple configured NNs to decide which is the active Namenode and then for subsequent calls it will invoke the previously successful NN ." But the current code call multiple configured NNs every time even when we already got the successful NN.
That's because in RetryInvocationHandler.java, ProxyDescriptor's member proxyInfo is assigned only when it is constructed or when failover occurs. RequestHedgingProxyProvider.currentUsedProxy is null in both cases, so the only proxy we can get is always a dynamic proxy handled by RequestHedgingInvocationHandler.class. RequestHedgingInvocationHandler.class handles invoked method by calling multiple configured NNs.