You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Emmanuel Lecharny (JIRA)" <ji...@apache.org> on 2007/01/15 21:17:27 UTC

[jira] Closed: (DIRSERVER-759) object scope search on non-existant DN gives IllegalArgumentException: "Argument 'an_obj1' is null"

     [ https://issues.apache.org/jira/browse/DIRSERVER-759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Lecharny closed DIRSERVER-759.
---------------------------------------

    Resolution: Cannot Reproduce

Well, I have added some test case for this issue, but it seems I cannot reproduce the problem.

The committed test cases are : http://svn.apache.org/viewvc?view=rev&rev=496459

I close the issue, if another test case can reproduce the problem, we will reopen it.

> object scope search on non-existant DN gives IllegalArgumentException: "Argument 'an_obj1' is null"
> ---------------------------------------------------------------------------------------------------
>
>                 Key: DIRSERVER-759
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-759
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.5.1
>         Environment: N/A
>            Reporter: Norval Hope
>
> Fire up a vanilla empty ApacheDS 1.1 instance, and then attempt an object scope search on a non-existant base DN like "cn=admin,ou=system", with filter "(objectclass=*)" returning no attributes. 
> Instead of a NameNotFoundException exception you get the following stack trace:
> java.lang.IllegalArgumentException: Argument 'an_obj1' is null
> 	at org.apache.directory.shared.ldap.util.BigIntegerComparator.compare(BigIntegerComparator.java:56)
> 	at org.apache.directory.server.core.partition.impl.btree.IndexComparator$1.compare(IndexComparator.java:45)
> 	at java.util.TreeMap.compare(TreeMap.java:1093)
> 	at java.util.TreeMap.getEntry(TreeMap.java:347)
> 	at java.util.TreeMap.containsKey(TreeMap.java:204)
> 	at java.util.TreeSet.contains(TreeSet.java:196)
> 	at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable.has(JdbmTable.java:560)
> 	at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex.hasValue(JdbmIndex.java:394)
> 	at org.apache.directory.server.core.partition.impl.btree.LeafEvaluator.evalPresence(LeafEvaluator.java:242)
> 	at org.apache.directory.server.core.partition.impl.btree.LeafEvaluator.evaluate(LeafEvaluator.java:130)
> 	at org.apache.directory.server.core.partition.impl.btree.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:103)
> 	at org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerator$2.assertCandidate(ExpressionEnumerator.java:257)
> 	at org.apache.directory.server.core.partition.impl.btree.IndexAssertionEnumeration.prefetch(IndexAssertionEnumeration.java:161)
> 	at org.apache.directory.server.core.partition.impl.btree.IndexAssertionEnumeration.<init>(IndexAssertionEnumeration.java:66)
> 	at org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerator.enumConj(ExpressionEnumerator.java:270)
> 	at org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerator.enumerate(ExpressionEnumerator.java:134)
> 	at org.apache.directory.server.core.partition.impl.btree.DefaultSearchEngine.search(DefaultSearchEngine.java:136)
> 	at org.apache.directory.server.core.partition.impl.btree.BTreePartition.search(BTreePartition.java:404)
> 	at org.apache.directory.server.core.partition.DefaultPartitionNexus.search(DefaultPartitionNexus.java:866)
> 	at org.apache.directory.server.core.interceptor.InterceptorChain$1.search(InterceptorChain.java:139)
> 	at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search(InterceptorChain.java:1263)
> 	at org.apache.directory.server.core.schema.SchemaService.search(SchemaService.java:192)
> 	at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search(InterceptorChain.java:1263)
> 	at org.apache.directory.server.core.authn.AuthenticationService.search(AuthenticationService.java:417)
> 	at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search(InterceptorChain.java:1263)
> 	at org.apache.directory.server.core.normalization.NormalizationService.search(NormalizationService.java:326)
> 	at org.apache.directory.server.core.interceptor.InterceptorChain.search(InterceptorChain.java:828)
> 	at org.apache.directory.server.core.partition.PartitionNexusProxy.search(PartitionNexusProxy.java:479)
> 	at org.apache.directory.server.core.partition.PartitionNexusProxy.search(PartitionNexusProxy.java:424)
> 	at org.apache.directory.server.core.jndi.ServerDirContext.search(ServerDirContext.java:579)
> 	at org.apache.directory.server.ldap.support.SearchHandler.messageReceived(SearchHandler.java:323)
> The problem seems to be that in the enumerate method in ScopeEnumerator.java:67, the following line returns null:
>         final BigInteger id = db.getEntryId( snode.getBaseDn() );
> but nonetheless a IndexRecord is created and returned anyway. I don't know this code well enough to be certain whether a "LdapNameNotFoundException" should be thrown at this stage, or whether instead a check for a null IndexRecord id should be performed later when actually evaluating the filter. If someone more knowledgeable can offer some advice on this point then I can submit a patch and testcase.
> Note I tested if the same problem occurs in 1.0, and it doesn't.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira