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

Jing Zhao commented on HDFS-5587:
---------------------------------

The patch looks good overall. Some comments:
# When we have duplicated user/group names, instead of terminating the whole 
process, I think it will be better to rethrow the IOException and let 
upper-level application handle the exception.
{code}
+      LOG.fatal("Can't update maps:" + e);
+      terminate(1, e);
{code}
# We can check the detailed exception message after catching the exception in 
the following code:
{code}
+    try {
+      IdUserGroup.updateMapInternal(uMap, "user", GET_ALL_USERS_CMD, ":");
+      fail("didn't detect the duplicate name");
+    } catch (IOException e) {
+    }
{code}

> add debug information when NFS fails to start with duplicate user or group 
> names
> --------------------------------------------------------------------------------
>
>                 Key: HDFS-5587
>                 URL: https://issues.apache.org/jira/browse/HDFS-5587
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: nfs
>            Reporter: Brandon Li
>            Assignee: Brandon Li
>            Priority: Minor
>         Attachments: HDFS-5587.001.patch
>
>
> When the host provides duplicate user or group names, NFS will not start and 
> print errors like the following:
> {noformat}
> ... ... 
> 13/11/25 18:11:52 INFO nfs3.Nfs3Base: registered UNIX signal handlers for 
> [TERM, HUP, INT]
> Exception in thread "main" java.lang.IllegalArgumentException: value already 
> present: s-iss
> at com.google.common.base.Preconditions.checkArgument(Preconditions.java:115)
> at 
> com.google.common.collect.AbstractBiMap.putInBothMaps(AbstractBiMap.java:112)
> at com.google.common.collect.AbstractBiMap.put(AbstractBiMap.java:96)
> at com.google.common.collect.HashBiMap.put(HashBiMap.java:85)
> at 
> org.apache.hadoop.nfs.nfs3.IdUserGroup.updateMapInternal(IdUserGroup.java:85)
> at org.apache.hadoop.nfs.nfs3.IdUserGroup.updateMaps(IdUserGroup.java:110)
> at org.apache.hadoop.nfs.nfs3.IdUserGroup.<init>(IdUserGroup.java:54)
> at 
> org.apache.hadoop.hdfs.nfs.nfs3.RpcProgramNfs3.<init>(RpcProgramNfs3.java:172)
> at 
> org.apache.hadoop.hdfs.nfs.nfs3.RpcProgramNfs3.<init>(RpcProgramNfs3.java:164)
> at org.apache.hadoop.hdfs.nfs.nfs3.Nfs3.<init>(Nfs3.java:41)
> at org.apache.hadoop.hdfs.nfs.nfs3.Nfs3.main(Nfs3.java:52)
> 13/11/25 18:11:54 INFO nfs3.Nfs3Base: SHUTDOWN_MSG:
> ... ...
> {noformat}
> The reason NFS should not start is that, HDFS (non-kerberos cluster) uses 
> name as the only way to identify a user. On some linux box, it could have two 
> users with the same name but different user IDs. Linux might be able to work 
> fine with that most of the time. However, when NFS gateway talks to HDFS, 
> HDFS accepts only user name. That is, from HDFS' point of view, these two 
> different users are the same user even though they are different on the Linux 
> box.
> The duplicate names on Linux systems sometimes is because of some legacy 
> system configurations, or combined name services.
> Regardless, NFS gateway should print some help information so the user can 
> understand the error and the remove the duplicated names before NFS restart.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to