diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 45d331562cb..8fdce484862 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -1698,6 +1698,9 @@ Release 2.8.0 - UNRELEASED HDFS-9639. Inconsistent Logging in BootstrapStandby. (Xiaobing Zhou via Arpit Agarwal) + HDFS-8584. NPE in distcp when ssl configuration file does not exist in + class path. (Surendra Singh Lilhore via Xiaoyu Yao) + Release 2.7.3 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java b/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java index f919d211524..9db2b1b1e0f 100644 --- a/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java +++ b/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java @@ -19,6 +19,7 @@ package org.apache.hadoop.tools; import java.io.IOException; +import java.net.URL; import java.util.Random; import org.apache.commons.logging.Log; @@ -270,8 +271,14 @@ private Job createJob() throws IOException { */ private void setupSSLConfig(Job job) throws IOException { Configuration configuration = job.getConfiguration(); - Path sslConfigPath = new Path(configuration. - getResource(inputOptions.getSslConfigurationFile()).toString()); + URL sslFileUrl = configuration.getResource(inputOptions + .getSslConfigurationFile()); + if (sslFileUrl == null) { + throw new IOException( + "Given ssl configuration file doesn't exist in class path : " + + inputOptions.getSslConfigurationFile()); + } + Path sslConfigPath = new Path(sslFileUrl.toString()); addSSLFilesToDistCache(job, sslConfigPath); configuration.set(DistCpConstants.CONF_LABEL_SSL_CONF, sslConfigPath.getName());