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

Anu Engineer commented on HADOOP-12291:
---------------------------------------

[~ekundin] Thank you very much for providing this patch and taking care of most
jenkins issues in patch 2. I have some minor comments on Patch 2.


# Do we need -1 at all? In most cases it will not work and really depends on the
size of directory we are operating against. Since we know that it is not going 
to 
work or too slow in most cases, why support it ? My worry is that this will be 
used by 
some customer and will create very slow clusters. Can we please reduce this to  
positive key depth only  ? 
# what would be the impact of DIRECTORY_SEARCH_TIMEOUT
with a positive depth? Does it bail after the time out seconds or does it 
measure
timeout independently for each recursive query? if so, could you please define 
what is the right semantics here? 
# In {{LdapGroupsMapping.java:line 312}} : We add the groups to a list for all 
queries, but this is needed if the goUpHierarchy is != 0. Would you please add 
an if check? This is just to make sure that this code change does not change 
the memory usage if this feature is not enabled.
# In {{LdapGroupsMapping#goUpGroupHierarchy}}
nitpick: can we please remove the reference to the JIRA number? "for 
HADOOP-12291", when we commit this patch, we will refer to it. So it may not be 
needed in comments
# nitpick: do you want to rewrite this to be 
        {code}
    int nextLevel = 0;
    if (goUpHierarchy == -1) {
      nextLevel = -1;
    }
    else {
      nextLevel = goUpHierarchy -1;
    }
    {code}
into 
   {code}
   int nextLevel = (goUpHierarchy == -1) ? -1: goUpHierarchy -1;
   {code}
  Plus , Can you please define -1 as const like INFINITE_RECURSE = -1, so that 
code reading is easier ? or better just remove this INIFITE_RECURSE capability 
completely from code ? 
# nitpick : would you like to pull this out as a function ? 
   {code}
  while (groupResults.hasMoreElements()) {
          SearchResult groupResult = groupResults.nextElement();
          Attribute groupName = groupResult.getAttributes().get(groupNameAttr);
          groups.add(groupName.get().toString());
          groupDNs.add(groupResult.getNameInNamespace());
        }
   {code}
# Do you think we should check for the goUpHierarchy == 0 before doing a LDAP 
query since queries are generally expensive. I may be mistaken but I think you 
can optimize away one query call if you check for the value little earlier.
# nitpick : Please feel free to ignore this. But we seem to be mixing 
StringBuilder.append and String Concat. If we are using StringBuilder could we 
possible use appends all along instead of creating an unnecessary string. I 
know that this is the style used in this file and you are just following it, 
thought I would flag it for your consideration.
{code}
filter.append("(&" + groupSearchFilter + "(|");
{code}
# In TestLadpGroupMapping, Can you please use 
{{conf.setInt(LdapGroupsMapping.GROUP_HIERARCHY_LEVELS_KEY,1);}} instead of 
{{conf.set(LdapGroupsMapping.GROUP_HIERARCHY_LEVELS_KEY, "1");}}
# In the next patch would you please take care of this last checkstyle warning:
./hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/LdapGroupsMapping.java:368:
    }:5: '}' should be on the same line.


> Add support for nested groups in LdapGroupsMapping
> --------------------------------------------------
>
>                 Key: HADOOP-12291
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12291
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: security
>    Affects Versions: 2.8.0
>            Reporter: Gautam Gopalakrishnan
>            Assignee: Esther Kundin
>              Labels: features, patch
>             Fix For: 2.8.0
>
>         Attachments: HADOOP-12291.001.patch, HADOOP-12291.002.patch
>
>
> When using {{LdapGroupsMapping}} with Hadoop, nested groups are not 
> supported. So for example if user {{jdoe}} is part of group A which is a 
> member of group B, the group mapping currently returns only group A.
> Currently this facility is available with {{ShellBasedUnixGroupsMapping}} and 
> SSSD (or similar tools) but would be good to have this feature as part of 
> {{LdapGroupsMapping}} directly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to