[
https://issues.apache.org/jira/browse/HBASE-28955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17896166#comment-17896166
]
Istvan Toth commented on HBASE-28955:
-------------------------------------
Thanks for the explanation, I did not think that through. Some things cannot be
band-aided with reflection.
I think that at least 2.6.x should support Hadoop 3.4.1, unless we plan to EOL
it and release 2.7.x without Hadoop2 support. (and if we solve that, there is
no reason not backport that to 2.5)
In my mind, the thing keeping ppl on 2.x is going to be HBase 1.x API support,
rather than Hadoop2 support, so dropping Hadoop2 is a possibility, but I think
we should properly support Hadoop 3.4.1 ASAP in active releases, and dropping
Hadoop2 support won't help with that.
I think that adding an hbase-hadoop3-compat module is the best course of action.
> Improve lease renew for FanOutOneBlockAsyncDFSOutput
> ----------------------------------------------------
>
> Key: HBASE-28955
> URL: https://issues.apache.org/jira/browse/HBASE-28955
> Project: HBase
> Issue Type: Bug
> Components: Filesystem Integration, io
> Reporter: Duo Zhang
> Assignee: Duo Zhang
> Priority: Major
> Labels: pull-request-available
> Fix For: 3.0.0-beta-2
>
>
> When working with hadoop 3.4.x, we saw this in the stdout file
> {noformat}
> Exception in thread "LeaseRenewer:zhangduo@home"
> java.lang.NullPointerException: Cannot invoke
> "org.apache.hadoop.hdfs.DFSOutputStream.getNamespace()" because
> "outputStream" is null
> at org.apache.hadoop.hdfs.DFSClient.getNamespaces(DFSClient.java:596)
> at org.apache.hadoop.hdfs.DFSClient.renewLease(DFSClient.java:618)
> at
> org.apache.hadoop.hdfs.client.impl.LeaseRenewer.renew(LeaseRenewer.java:425)
> at
> org.apache.hadoop.hdfs.client.impl.LeaseRenewer.run(LeaseRenewer.java:445)
> at
> org.apache.hadoop.hdfs.client.impl.LeaseRenewer.access$800(LeaseRenewer.java:77)
> at
> org.apache.hadoop.hdfs.client.impl.LeaseRenewer$1.run(LeaseRenewer.java:336)
> at java.base/java.lang.Thread.run(Thread.java:840)
> {noformat}
> This is because in newer DFSClient implementation, we need to pass namespace
> when renewer lease so we can not just pass null as DFSOutputStream when
> calling DFSClient.beginFileLease. We should find a way to deal with it.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)