[ https://issues.apache.org/jira/browse/IGNITE-7799?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
PandaMonkey updated IGNITE-7799: -------------------------------- Description: 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. The dependency conflict problem brings high risks of "*NotClassDefFoundError:*" or "*NoSuchMethodError*" issues at runtime. Please notice this problem. *The solution is upgrading httpclient from 4.5.1 to 4.5.2.* ===============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)> was: 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 "*NotClassDefFoundError:*" or "*NoSuchMethodError*" issues at runtime. Please notice this problem. *The solution is upgrading httpclient from 4.5.1 to 4.5.2.* ===============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)> > Dependency Conflict : Conlicting JARs org.apache.httpcomponents:httpclient > -------------------------------------------------------------------------- > > 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 > Priority: Major > 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. The dependency conflict problem brings high risks of > "*NotClassDefFoundError:*" or "*NoSuchMethodError*" issues at runtime. Please > notice this problem. *The solution is upgrading httpclient from 4.5.1 to > 4.5.2.* > > ===============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)