[
https://issues.apache.org/jira/browse/PHOENIX-4946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16637539#comment-16637539
]
Josh Elser commented on PHOENIX-4946:
-------------------------------------
.001 phoenix-core only used HC's httpclient artifact for the JCIP annotations
that were in httpclient 4.0.1. These were removed in later versions of
httpclient.
We already had stephenc's jcip annotation implementation as a dependency – just
use that instead. Should work around the H3 dependency clash issue.
> Super old httpclient version in phoenix-core causes NoClassDefFoundError when
> Hadoop KMS is enabled
> ---------------------------------------------------------------------------------------------------
>
> Key: PHOENIX-4946
> URL: https://issues.apache.org/jira/browse/PHOENIX-4946
> Project: Phoenix
> Issue Type: Bug
> Reporter: Josh Elser
> Assignee: Josh Elser
> Priority: Major
> Fix For: 5.1.0
>
> Attachments: PHOENIX-4946.001.patch
>
>
> We have a super-old version of org.apache.httpcomponents:httpclient in
> phoenix-core of 4.0.1. With Hadoop3, this appears to exclude out 4.5.2 which
> comes in transitively.
> When using the Hadoop KMS provider, you'll see an error like:
> {noformat}
> java.lang.NoClassDefFoundError:
> org/apache/phoenix/shaded/org/apache/http/client/utils/URIBuilder
> at
> org.apache.hadoop.crypto.key.kms.KMSClientProvider.createURL(KMSClientProvider.java:437)
> at
> org.apache.hadoop.crypto.key.kms.KMSClientProvider.addDelegationTokens(KMSClientProvider.java:1032)
> at
> org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider$1.call(LoadBalancingKMSClientProvider.java:193)
> at
> org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider$1.call(LoadBalancingKMSClientProvider.java:190)
> at
> org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider.doOp(LoadBalancingKMSClientProvider.java:123)
> at
> org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider.addDelegationTokens(LoadBalancingKMSClientProvider.java:190)
> at
> org.apache.hadoop.crypto.key.KeyProviderDelegationTokenExtension.addDelegationTokens(KeyProviderDelegationTokenExtension.java:110)
> at
> org.apache.hadoop.hdfs.HdfsKMSUtil.addDelegationTokensForKeyProvider(HdfsKMSUtil.java:84)
> at
> org.apache.hadoop.hdfs.DistributedFileSystem.addDelegationTokens(DistributedFileSystem.java:2821)
> {noformat}
> It seems like we have no good reason to depend on an old version of
> httpclient.
> Avatica is on 4.5.2 by default, but we can probably just go directly to the
> latest which is 4.5.6.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)