[ https://issues.apache.org/jira/browse/HDFS-14116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16703877#comment-16703877 ]
Chen Liang commented on HDFS-14116: ----------------------------------- Thanks [~csun]! Yeah I can another look later. Posting error stack trace when running NNThroughput here for record: {code} Caused by: java.lang.ClassCastException: org.apache.hadoop.hdfs.server.namenode.ha.NameNodeHAProxyFactory cannot be cast to org.apache.hadoop.hdfs.server.namenode.ha.ClientHAProxyFactory at org.apache.hadoop.hdfs.server.namenode.ha.ObserverReadProxyProvider.<init>(ObserverReadProxyProvider.java:118) at org.apache.hadoop.hdfs.server.namenode.ha.ObserverReadProxyProviderWithIPFailover.<init>(ObserverReadProxyProviderWithIPFailover.java:99) at org.apache.hadoop.hdfs.server.namenode.ha.ObserverReadProxyProviderWithIPFailover.<init>(ObserverReadProxyProviderWithIPFailover.java:86) ... 12 more {code} {code} Exception in thread "main" java.io.IOException: Couldn't create proxy provider class org.apache.hadoop.hdfs.server.namenode.ha.ObserverReadProxyProviderWithIPFailover at org.apache.hadoop.hdfs.NameNodeProxiesClient.createFailoverProxyProvider(NameNodeProxiesClient.java:261) at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:115) at org.apache.hadoop.hdfs.DFSTestUtil.getRefreshUserMappingsProtocolProxy(DFSTestUtil.java:2022) at org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.run(NNThroughputBenchmark.java:1524) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90) at org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.runBenchmark(NNThroughputBenchmark.java:1432) at org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark.main(NNThroughputBenchmark.java:1552) {code} > 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 > Priority: Major > > 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