[jira] [Created] (IGNITE-7799) Dependency Conflict : Conlicting JARs

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (IGNITE-7799) Dependency Conflict : Conlicting JARs

Anton Vinogradov (Jira)
PandaMonkey created IGNITE-7799:
-----------------------------------

             Summary: Dependency Conflict : Conlicting JARs
                 Key: IGNITE-7799
                 URL: https://issues.apache.org/jira/browse/IGNITE-7799
             Project: Ignite
          Issue Type: Bug
          Components: aws
    Affects Versions: 2.5
            Reporter: PandaMonkey
             Fix For: 3.0


Hi, by analyzing ignite-master\modules\aws\pom.xml, I found that there are two versions of org.apache.httpcomponents:httpclient. Their introduced path is:

org.apache.ignite:ignite-aws:2.5.0-SNAPSHOT::null->com.amazonaws:aws-java-sdk-core:1.11.75::compile->org.apache.httpcomponents:httpclient:4.5.2::compile
org.apache.ignite:ignite-aws:2.5.0-SNAPSHOT::null->org.apache.httpcomponents:httpclient:4.5.1::compile

Of them, httpclient:4.5.2 is the transitive dependency, and httpclient:4.5.1 is the direct dependency. By further analyzing the source code, we found they have different features. As the JVM only load the classes present first on the classpath and shadow the other duplicate ones with the same names. The dependency conflict problem brings high risks of "NoSuchMethodException" or "NoSuchMethodError" issues at runtime. Please notice this problem.

 

===============projectPath->org.apache.ignite:ignite-aws:2.5.0-SNAPSHOT@D:\ws\snapshot\ignite-master\modules\aws\pom.xml
=======conflict:<org.apache.httpcomponents:httpclient:4.5.2::compile><org.apache.httpcomponents:httpclient:4.5.1::compile> size:2
org.apache.ignite:ignite-aws:2.5.0-SNAPSHOT::null->com.amazonaws:aws-java-sdk-core:1.11.75::compile->org.apache.httpcomponents:httpclient:4.5.2::compile
org.apache.ignite:ignite-aws:2.5.0-SNAPSHOT::null->org.apache.httpcomponents:httpclient:4.5.1::compile

*====Risk for ClassNotFoundException/NotClassDefFoundError:*
 a) Classes that only exist in org.apache.httpcomponents:httpclient:4.5.1:
org.apache.http.client.utils.DateUtils$DateFormatHolder$1
 
 b) Classes that only exist in org.apache.httpcomponents:httpclient:4.5.2:
org.apache.http.conn.ssl.DefaultHostnameVerifier$TYPE
org.apache.http.impl.client.DefaultClientConnectionReuseStrategy
org.apache.http.conn.ssl.DefaultHostnameVerifier$1


*====Risk for NoSuchMethodException/NoSuchMethodError:*
 Methods that only exist in org.apache.httpcomponents:httpclient:4.5.2:
<org.apache.http.impl.cookie.PublicSuffixDomainFilter: java.util.Map createLocalDomainMap()>
<org.apache.http.impl.cookie.IgnoreSpec: boolean match(org.apache.http.cookie.Cookie,org.apache.http.cookie.CookieOrigin)>
<org.apache.http.impl.client.HttpClientBuilder: org.apache.http.impl.client.HttpClientBuilder setDnsResolver(org.apache.http.conn.DnsResolver)>

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)