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: [email protected]
For additional commands, e-mail: [email protected]