[ 
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)

Reply via email to