You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Chen Liang (JIRA)" <ji...@apache.org> on 2018/11/29 20:26:00 UTC

[jira] [Created] (HDFS-14116) Fix a potential class cast error in ObserverReadProxyProvider

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-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-help@hadoop.apache.org