Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
ShuffleUtils does the following:
if (sslFactory == null) { synchronized (HttpConnectionParams.class) { //Create sslFactory if it is null or if it was destroyed earlier if (sslFactory == null || sslFactory.getKeystoresFactory().getTrustManagers() == null) { sslFactory = new SSLFactory(org.apache.hadoop.security.ssl.SSLFactory.Mode.CLIENT, conf); try { sslFactory.init();
It is possible for a thread to get sslFactory that has been assigned but not initialized. It could result in e.g. the hostnameVerifier being null:
Caused by: java.lang.IllegalArgumentException: no HostnameVerifier specified at javax.net.ssl.HttpsURLConnection.setHostnameVerifier(HttpsURLConnection.java:265) at org.apache.tez.http.SSLFactory.configure(SSLFactory.java:219) at org.apache.tez.http.HttpConnection.setupConnection(HttpConnection.java:98) at org.apache.tez.http.HttpConnection.connect(HttpConnection.java:137) at org.apache.tez.http.HttpConnection.connect(HttpConnection.java:123) at org.apache.tez.runtime.library.common.shuffle.orderedgrouped.FetcherOrderedGrouped.setupConnection(FetcherOrderedGrouped.java:340) at org.apache.tez.runtime.library.common.shuffle.orderedgrouped.FetcherOrderedGrouped.copyFromHost(FetcherOrderedGrouped.java:260) at org.apache.tez.runtime.library.common.shuffle.orderedgrouped.FetcherOrderedGrouped.fetchNext(FetcherOrderedGrouped.java:178) at org.apache.tez.runtime.library.common.shuffle.orderedgrouped.FetcherOrderedGrouped.callInternal(FetcherOrderedGrouped.java:191) at org.apache.tez.runtime.library.common.shuffle.orderedgrouped.FetcherOrderedGrouped.callInternal(FetcherOrderedGrouped.java:54)