Chen Liang created HDFS-14116: --------------------------------- Summary: Fix a potential class cast error in ObserverReadProxyProvider Key: HDFS-14116 URL: https://issues.apache.org/jira/browse/HDFS-14116 Project: Hadoop HDFS Issue Type: Sub-task Components: hdfs-client Reporter: Chen Liang
Currently in {{ObserverReadProxyProvider}} constructor there is this line {code} ((ClientHAProxyFactory<T>) factory).setAlignmentContext(alignmentContext); {code} This could potentially cause failure, because it is possible that factory can not be casted here. Specifically, {{NameNodeProxiesClient.createFailoverProxyProvider}} is where the constructor will be called, and there are two paths that could call into this: (1).{{NameNodeProxies.createProxy}} (2).{{NameNodeProxiesClient.createFailoverProxyProvider}} (2) works fine because it always uses {{ClientHAProxyFactory}} but (1) uses {{NameNodeHAProxyFactory}} which can not be casted to {{ClientHAProxyFactory}}, this happens when, for example, running NNThroughputBenmarck. To fix this we can at least: 1. introduce setAlignmentContext to HAProxyFactory which is the parent of both ClientHAProxyFactory and NameNodeHAProxyFactory OR 2. only setAlignmentContext when it is ClientHAProxyFactory by, say, having a if check with reflection. Depending on whether it make sense to have alignment context for the case (1) calling code paths. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org