directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DIRSERVER-1357) NullPointerException when deleting alias
Date Wed, 27 May 2009 12:10:45 GMT

    [ https://issues.apache.org/jira/browse/DIRSERVER-1357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12713546#action_12713546
] 

Emmanuel Lecharny commented on DIRSERVER-1357:
----------------------------------------------

First, the server handle operations done on an alias without a referenced object. It just
throws some NamingException (well, it's not that perfect, as we don't generate the resultCode
atm. I'm fixing it).

Now, all the mess is due to the fact that we have an index for alias, speeding up the retrieval
of the referenced entry. Ie, we have an Alias->Entry index. IMO, this is a waste. We already
have a Alias->DN index, as the ObjectClass is already indexed, so we immediately know that
an entry is an alias (as it has the Alias ObjectClass). Then we just have to get the aliasObjectName
attributeType, which is a DN, and a lookup for this DN will returns the entry, or nothing
if the entry does not exist.

At the end of the day, I think that this issue can vanish if we remove the Alias index. This
won't cause a lot of perfomance problem, as we just do an indirection to retrieve the entry.
Any other solution is cumbersome, complex, and error prone.

last, not least, there are some other things we have to check : RFC 4512, chap. 2.6 says that
an alias *must* not have subordinates. I'm not sure this is tested...

> NullPointerException when deleting alias
> ----------------------------------------
>
>                 Key: DIRSERVER-1357
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1357
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.5.5, 1.5.4
>            Reporter: Stefan Seelmann
>             Fix For: 1.5.5
>
>         Attachments: DIRSERVER_1357.java
>
>
> There is a NPE when deleting an alias entry is some special case. Here is a example DIT:
> ou=system
>    |--ou=sales
>    |    |--cn=foo  <--real entry
>    |--ou=engineering
>         |--cn=foo  <--alias, pointing to the real entry
> When I first delete the real entry and afterwards the alias the server throws an exception,
when it cleans the oneAliasIdx and subAliasIdx in the JdbmStore. Note, the exception does
not occur if the real entry and alias are direct descendants of the context entry, because
in that case the oneAliasIdx and subAliasIdx are not used.
> java.lang.NullPointerException
> 	at org.apache.directory.server.core.partition.impl.btree.LongComparator.compare(LongComparator.java:45)
> 	at org.apache.directory.server.core.partition.impl.btree.LongComparator.compare(LongComparator.java:1)
> 	at org.apache.directory.server.core.avltree.AvlTree.find(AvlTree.java:661)
> 	at org.apache.directory.server.core.avltree.AvlTree.remove(AvlTree.java:217)
> 	at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable.remove(JdbmTable.java:662)
> 	at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex.drop(JdbmIndex.java:468)
> 	at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmStore.dropAliasIndices(JdbmStore.java:822)
> 	at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmStore.delete(JdbmStore.java:1098)
> 	at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition.delete(JdbmPartition.java:487)
> 	at org.apache.directory.server.core.partition.impl.btree.BTreePartition.delete(BTreePartition.java:217)
> 	at org.apache.directory.server.core.partition.DefaultPartitionNexus.delete(DefaultPartitionNexus.java:824)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message