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

Emmanuel Lecharny commented on DIRSERVER-1211:
----------------------------------------------

Looking at the stack trace, and looking at the code at JdbmStrore.replace() :

    private void replace( Long id, ServerEntry entry, EntryAttribute mods ) 
throws Exception
    {
        if ( entry instanceof ClonedServerEntry )
        {
            throw new Exception( "Cannot store a ClonedServerEntry" );
        }
        
        String modsOid = oidRegistry.getOid( mods.getId() );

        if ( hasUserIndexOn( modsOid ) )
        {
            Index<?,E> index = getUserIndex( modsOid );

            // Drop all existing attribute value index entries and add new ones
            ( ( JdbmIndex<?,E> ) index ).drop( id );  <-- here, we get the 
exception
...

I'm just thinking that we are trying to remove a reference from an index, but 
as we are trying to add a new value to thoe indexed attribute, there is no 
chance this reference could be found in the index.

One more check is necessary here: the modified attribute should already exist 
in the entry before trying to remove the reference to this entry into the index.

Thoughts ?


> Error code 54 in modify-replace operation
> -----------------------------------------
>
>                 Key: DIRSERVER-1211
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1211
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 1.5.3
>            Reporter: Stefan Seelmann
>            Assignee: Emmanuel Lecharny
>
> This error occurs with apacheds-1.5.3-fixed.tar.gz and the current 
> trunk-with-dependencies (Revision 680187), both with default server.xml
> I use studio to run the following LDIF:
> ---------------------------------------------
> dn: cn=Kate Bush,ou=system
> changetype: add
> objectClass: top
> objectClass: person
> objectClass: organizationalPerson
> objectClass: inetOrgPerson
> cn: Kate Bush
> sn: Bush
> dn: cn=Kate Bush,ou=system
> changetype: modify
> replace: ou
> ou: Test
> -
> ---------------------------------------------
> The second LDIF record fails with error 54. The log is here: 
> http://www.pastebin.org/57617. 
> The error does not occur when I use 'add:ou' instead of 'replace:ou'
> The error does not occur when I use another attribute, e.g. 'decription' 
> instead of 'ou'
> Emmanuel's idea on IM was that it is because 'ou' is indexed in the default 
> server.xml.

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

Reply via email to