[ http://issues.apache.org/jira/browse/DIRSERVER-803?page=comments#action_12461020 ] Emmanuel Lecharny commented on DIRSERVER-803: ---------------------------------------------
Oh... The error message is pretty clear : there is a cycle. If you do a search starting at the top level and with a Whole Subtree scope, you will have an infinite loop. The question is : do we detect such cycle when inserting data, or do we stop to search further as soon as we found an entry which is already in the result set ? I don't know if adding such a ldif is valid : dn: ou=A, dc=example, dc=com ou: A objectclass: top objectclass: organizationalUnit dn: ou=B, dc=example, dc=com ou: B objectclass: top objectclass: organizationalUnit dn: ou=A->B, ou=A, dc=example, dc=com ou: A->B objectclass: top objectclass: organizationalUnit objectclass: alias aliasedobjectname: ou=B, dc=example, dc=com dn: ou=B->A, ou=B, dc=example, dc=com ou: B->A objectclass: top objectclass: organizationalUnit objectclass: alias aliasedobjectname: ou=A, dc=example, dc=com There is a cycle, but it will be difficult to find it when being added. On the other side, if we try to detect a cycle during a search, we may have to store a hashmap of seen DN to check that a DN has not been already seen, which myth be very memory consumming (especially if we have a big search ...) Not a simple question, no simple solutions ... >From my point of view, we should favor the second solution (detection while >searching) but with a check test when adding, and an optionnal setting of the >server to allow a check/denial when adding, modifying or modifyRDNing entries. wdyt ? > Creating an alias from a child entry to the ancestor causes an error (return > code 36) > ------------------------------------------------------------------------------------- > > Key: DIRSERVER-803 > URL: http://issues.apache.org/jira/browse/DIRSERVER-803 > Project: Directory ApacheDS > Issue Type: Bug > Affects Versions: 1.0 > Environment: * ApacheDS 1.0.0 > * Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03) > * Windows XP Professional SP2 > Reporter: Stefan Zoerner > Priority: Minor > Attachments: AddAliasFromDescendantTest.java > > > It fails to import the following two entries into ApacheDS 1.0 (default > server.xml). > The second entry is an alias to the first one, and is directly located below > the first entry: > dn: ou=Singers,dc=example,dc=com > ou: Singers > objectclass: top > objectclass: organizationalUnit > dn: ou=Songwriters,ou=Singers,dc=example,dc=com > ou: Songwriters > objectclass: top > objectclass: organizationalUnit > objectclass: alias > aliasedobjectname: ou=Singers,dc=example,dc=com > Here is the result I got from an ldapmodify attempt: > $ ldapmodify -h localhost -p 10389 -D "uid=admin,ou=system" -w ****** -q -c > -a -f aliasSingers.ldif > ldap_add: Unknown error > ldap_add: additional info: failed to add entry > ou=Songwriters,ou=Singers,dc=example,dc=com: [36] aliasDereferencingProblem - > attempt to create alias with cycle to relative ou=Singers,dc=example,dc=com > not allowed from descendent alias > 2.5.4.11=songwriters,2.5.4.11=singers,0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com > It seems that ApacheDS does not allow to create an alias from a descendant. I > tried the same with Tivoli Directory Server 6.0 and Sun Java System Directory > Server 5.2, both allowed this constellation. > Find attached a JNDI JUnit test which is able to cause the error by adding > two entries programmatically. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
