Details
-
Task
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
After HADOOP-17116, RetryInvocationHandler skips logging the first failover INFO message from each proxy. But ObserverReadProxyProvider uses combinedProxy object which combines all proxies into one and assigns combinedInfo as the ProxyInfo.
ObserverReadProxyProvider# Lines 197-207: for (int i = 0; i < nameNodeProxies.size(); i++) { if (i > 0) { combinedInfo.append(","); } combinedInfo.append(nameNodeProxies.get(i).proxyInfo); } combinedInfo.append(']'); T wrappedProxy = (T) Proxy.newProxyInstance( ObserverReadInvocationHandler.class.getClassLoader(), new Class<?>[] {xface}, new ObserverReadInvocationHandler()); combinedProxy = new ProxyInfo<>(wrappedProxy, combinedInfo.toString())
RetryInvocationHandler depends on the ProxyInfo to differentiate between proxies while checking if failover from that proxy happened before. And since combined proxy has only 1 proxy, HADOOP-17116 doesn't work on {{ObserverReadProxyProvider.}}It would need to handled separately.