[
https://issues.apache.org/jira/browse/HADOOP-17011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17091777#comment-17091777
]
Ayush Saxena commented on HADOOP-17011:
---------------------------------------
Thanx Everyone for the discussion here, Seems Fair enough.
bq. We can change all of them together in this patch, if any.
Yes, we should Probably fix all in one go, [~ctest.team] Did you check all the
places, Give a check {{FsCommand.java}} L111, {{FileContext.java}} L486,
{{NamenodeUtils}} L73. It is actually at many places, can you give a check once
more, May be I am checking something wrong.
> Tolerate leading and trailing spaces in fs.defaultFS
> ----------------------------------------------------
>
> Key: HADOOP-17011
> URL: https://issues.apache.org/jira/browse/HADOOP-17011
> Project: Hadoop Common
> Issue Type: Bug
> Components: common
> Reporter: Ctest
> Assignee: Ctest
> Priority: Major
> Attachments: HADOOP-17011-001.patch, HADOOP-17011-002.patch,
> HADOOP-17011-003.patch
>
>
> *Problem:*
> Currently, `getDefaultUri` is using `conf.get` to get the value of
> `fs.defaultFS`, which means that the trailing whitespace after a valid URI
> won’t be removed and could stop namenode and datanode from starting up.
>
> *How to reproduce (Hadoop-2.8.5):*
> Set the configuration
> {code:java}
> <property>
> <name>fs.defaultFS</name>
> <value>hdfs://localhost:9000 </value>
> </property>{code}
> In core-site.xml (there is a whitespace after 9000) and start HDFS.
> Namenode and datanode won’t start and the log message is:
> {code:java}
> 2020-04-23 11:09:48,198 ERROR
> org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
> java.lang.IllegalArgumentException: Illegal character in authority at index
> 7: hdfs://localhost:9000
> at java.net.URI.create(URI.java:852)
> at
> org.apache.hadoop.hdfs.server.namenode.NameNode.setClientNamenodeAddress(NameNode.java:440)
> at
> org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:897)
> at
> org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
> at
> org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
> at
> org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
> Caused by: java.net.URISyntaxException: Illegal character in authority at
> index 7: hdfs://localhost:9000
> at java.net.URI$Parser.fail(URI.java:2848)
> at java.net.URI$Parser.parseAuthority(URI.java:3186)
> at java.net.URI$Parser.parseHierarchical(URI.java:3097)
> at java.net.URI$Parser.parse(URI.java:3053)
> at java.net.URI.<init>(URI.java:588)
> at java.net.URI.create(URI.java:850)
> ... 5 more
> {code}
>
> *Solution:*
> Use `getTrimmed` instead of `get` for `fs.defaultFS`:
> {code:java}
> public static URI getDefaultUri(Configuration conf) {
> URI uri =
> URI.create(fixName(conf.getTrimmed(FS_DEFAULT_NAME_KEY, DEFAULT_FS)));
> if (uri.getScheme() == null) {
> throw new IllegalArgumentException("No scheme in default FS: " + uri);
> }
> return uri;
> }
> {code}
> I have submitted a patch for trunk about this.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]