diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 9a6439c66a..fcf0f3a022 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -382,6 +382,8 @@ Release 2.0.0 - UNRELEASED HADOOP-8310. FileContext#checkPath should handle URIs with no port. (atm) + HADOOP-8321. TestUrlStreamHandler fails. (tucu) + BREAKDOWN OF HADOOP-7454 SUBTASKS HADOOP-7455. HA: Introduce HA Service Protocol Interface. (suresh) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsUrlStreamHandlerFactory.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsUrlStreamHandlerFactory.java index 2782ed588d..b9a5f1a2cc 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsUrlStreamHandlerFactory.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsUrlStreamHandlerFactory.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.fs; +import java.io.IOException; import java.net.URLStreamHandlerFactory; import java.util.HashMap; import java.util.Map; @@ -50,25 +51,23 @@ public class FsUrlStreamHandlerFactory implements private java.net.URLStreamHandler handler; public FsUrlStreamHandlerFactory() { - this.conf = new Configuration(); - // force the resolution of the configuration files - // this is required if we want the factory to be able to handle - // file:// URLs - this.conf.getClass("fs.file.impl", null); - this.handler = new FsUrlStreamHandler(this.conf); + this(new Configuration()); } public FsUrlStreamHandlerFactory(Configuration conf) { this.conf = new Configuration(conf); - // force the resolution of the configuration files - this.conf.getClass("fs.file.impl", null); this.handler = new FsUrlStreamHandler(this.conf); } public java.net.URLStreamHandler createURLStreamHandler(String protocol) { if (!protocols.containsKey(protocol)) { - boolean known = - (conf.getClass("fs." + protocol + ".impl", null) != null); + boolean known = true; + try { + FileSystem.getFileSystemClass(protocol, conf); + } + catch (IOException ex) { + known = false; + } protocols.put(protocol, known); } if (protocols.get(protocol)) {