[ https://issues.apache.org/jira/browse/HBASE-20244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16466752#comment-16466752 ]
Duo Zhang commented on HBASE-20244: ----------------------------------- And there are also other problems for WAL on hadoop3, not only this one. If user sets EC on the WAL directory, then we will fail to write WAL because the EC output does not support hflush/haunches. We need to use an API which only introduced in Hadoop 3 to create a normal output stream. This also effect FSHLog, not only AsyncFSWAL. In general, before we have a production ready hadoop3 release, I do not think we need to make the Hadoop3 support perfect. > NoSuchMethodException when retrieving private method > decryptEncryptedDataEncryptionKey from DFSClient > ----------------------------------------------------------------------------------------------------- > > Key: HBASE-20244 > URL: https://issues.apache.org/jira/browse/HBASE-20244 > Project: HBase > Issue Type: Bug > Reporter: Ted Yu > Assignee: Ted Yu > Priority: Major > Fix For: 2.0.1 > > Attachments: 20244.v1.txt, 20244.v1.txt, 20244.v1.txt > > > I was running unit test against hadoop 3.0.1 RC and saw the following in test > output: > {code} > ERROR [RS-EventLoopGroup-3-3] > asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper(267): Couldn't properly > initialize access to HDFS internals. Please update your WAL Provider to not > make use of the 'asyncfs' provider. See HBASE-16110 for more information. > java.lang.NoSuchMethodException: > org.apache.hadoop.hdfs.DFSClient.decryptEncryptedDataEncryptionKey(org.apache.hadoop.fs.FileEncryptionInfo) > at java.lang.Class.getDeclaredMethod(Class.java:2130) > at > org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.createTransparentCryptoHelper(FanOutOneBlockAsyncDFSOutputSaslHelper.java:232) > at > org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.<clinit>(FanOutOneBlockAsyncDFSOutputSaslHelper.java:262) > at > org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.initialize(FanOutOneBlockAsyncDFSOutputHelper.java:661) > at > org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.access$300(FanOutOneBlockAsyncDFSOutputHelper.java:118) > at > org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$13.operationComplete(FanOutOneBlockAsyncDFSOutputHelper.java:720) > at > org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$13.operationComplete(FanOutOneBlockAsyncDFSOutputHelper.java:715) > at > org.apache.hbase.thirdparty.io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:507) > at > org.apache.hbase.thirdparty.io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:500) > at > org.apache.hbase.thirdparty.io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:479) > at > org.apache.hbase.thirdparty.io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:420) > at > org.apache.hbase.thirdparty.io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) > at > org.apache.hbase.thirdparty.io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:82) > at > org.apache.hbase.thirdparty.io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:306) > at > org.apache.hbase.thirdparty.io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:341) > at > org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:633) > at > org.apache.hbase.thirdparty.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580) > {code} > The private method was moved by HDFS-12574 to HdfsKMSUtil with different > signature. > To accommodate the above method movement, it seems we need to call the > following method of DFSClient : > {code} > public KeyProvider getKeyProvider() throws IOException { > {code} > Since the new decryptEncryptedDataEncryptionKey method has this signature: > {code} > static KeyVersion decryptEncryptedDataEncryptionKey(FileEncryptionInfo > feInfo, KeyProvider keyProvider) throws IOException { > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)