[ 
https://issues.apache.org/jira/browse/HADOOP-17011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17090998#comment-17090998
 ] 

Ctest edited comment on HADOOP-17011 at 4/23/20, 11:00 PM:
-----------------------------------------------------------

[~ayushtkn]  [~liuml07] Thank you for the reply!

I can change the title to "Tolerate leading and trailing spaces in 
fs.defaultFS”.

I think the log message here is not clear enough for this misconfiguration. It 
says:
{code:java}
java.lang.IllegalArgumentException: Illegal character in authority at index 7: 
hdfs://localhost:9000 
{code}
But actually it has nothing to do with the "character in authority at index 7". 
It is all about the trailing space after "9000".

This parameter is very frequently used and many freshmen users could make such 
a mistake. So using `getTrimmed` can prevent it from happening again.


was (Author: ctest.team):
[~ayushtkn]  [~liuml07] Thank you for the reply!

I can change the title to "Trailing whitespace in fs.defaultFS will prevent 
namenode and datanode from starting”, will it be better?

I think the log message here is not clear enough for this misconfiguration. It 
says:
{code:java}
java.lang.IllegalArgumentException: Illegal character in authority at index 7: 
hdfs://localhost:9000 
{code}
But actually it has nothing to do with the "character in authority at index 7". 
It is all about the trailing space after "9000".

This parameter is very frequently used and many freshmen users could make such 
a mistake. So using `getTrimmed` can prevent it from happening again.

> Trailing whitespace in fs.defaultFS will crash namenode and datanode
> --------------------------------------------------------------------
>
>                 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
>
>
> *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: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to