You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Kevin Hogeland (JIRA)" <ji...@apache.org> on 2016/04/02 01:58:25 UTC
[jira] [Created] (HADOOP-12991) Conflicting default ports in
DelegateToFileSystem
Kevin Hogeland created HADOOP-12991:
---------------------------------------
Summary: Conflicting default ports in DelegateToFileSystem
Key: HADOOP-12991
URL: https://issues.apache.org/jira/browse/HADOOP-12991
Project: Hadoop Common
Issue Type: Bug
Components: fs
Affects Versions: 2.7.2
Reporter: Kevin Hogeland
HADOOP-12304 introduced logic to ensure that the {{DelegateToFileSystem}} constructor sets the default port to -1:
{code:title=DelegateToFileSystem.java}
protected DelegateToFileSystem(URI theUri, FileSystem theFsImpl,
Configuration conf, String supportedScheme, boolean authorityRequired)
throws IOException, URISyntaxException {
super(theUri, supportedScheme, authorityRequired,
getDefaultPortIfDefined(theFsImpl));
fsImpl = theFsImpl;
fsImpl.initialize(theUri, conf);
fsImpl.statistics = getStatistics();
}
private static int getDefaultPortIfDefined(FileSystem theFsImpl) {
int defaultPort = theFsImpl.getDefaultPort();
return defaultPort != 0 ? defaultPort : -1;
}
{/code}
However, getUriDefaultPort returns 0:
{code:title=DelegateToFileSystem.java}
public int getUriDefaultPort() {
return 0;
}
{/code}
This breaks {{AbstractFileSystem#checkPath}}:
{code:title=AbstractFileSystem.java}
int thisPort = this.getUri().getPort(); // If using DelegateToFileSystem, this is -1
int thatPort = uri.getPort(); // This is -1 by default in java.net.URI
if (thatPort == -1) {
thatPort = this.getUriDefaultPort(); // Sets thatPort to 0
}
if (thisPort != thatPort) {
throw new InvalidPathException("Wrong FS: " + path + ", expected: "
+ this.getUri());
}
{/code}
Which breaks any subclasses of {{DelegateToFileSystem}} that don't specify a port (S3n, Wasb(s)).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)