You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Piotr Kubowicz (JIRA)" <ji...@apache.org> on 2013/06/11 11:07:19 UTC

[jira] [Created] (DIRSERVER-1853) NPE in getChildCount() when reverting in an AVL partition

Piotr Kubowicz created DIRSERVER-1853:
-----------------------------------------

             Summary: NPE in getChildCount() when reverting in an AVL partition
                 Key: DIRSERVER-1853
                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1853
             Project: Directory ApacheDS
          Issue Type: Bug
    Affects Versions: 2.0.0-M12
            Reporter: Piotr Kubowicz


Stacktrace:

org.apache.directory.api.ldap.model.exception.LdapOperationException
        at org.apache.directory.server.core.DefaultDirectoryService.revert(DefaultDirectoryService.java:1177)
Caused by: org.apache.directory.api.ldap.model.exception.LdapOperationErrorException
        at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.getChildCount(AbstractBTreePartition.java:2156)
        at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.delete(AbstractBTreePartition.java:825)
        at org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.delete(DefaultPartitionNexus.java:441)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor$1.delete(BaseInterceptor.java:185)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.journal.JournalInterceptor.delete(JournalInterceptor.java:181)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.changelog.ChangeLogInterceptor.delete(ChangeLogInterceptor.java:161)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.trigger.TriggerInterceptor.delete(TriggerInterceptor.java:336)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.event.EventInterceptor.delete(EventInterceptor.java:244)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.subtree.SubentryInterceptor.delete(SubentryInterceptor.java:1055)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.operational.OperationalAttributeInterceptor.delete(OperationalAttributeInterceptor.java:482)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.exception.ExceptionInterceptor.delete(ExceptionInterceptor.java:206)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.admin.AdministrativePointInterceptor.delete(AdministrativePointInterceptor.java:1261)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.delete(DefaultAuthorizationInterceptor.java:225)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.authz.AciAuthorizationInterceptor.delete(AciAuthorizationInterceptor.java:664)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.referral.ReferralInterceptor.delete(ReferralInterceptor.java:288)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.authn.AuthenticationInterceptor.delete(AuthenticationInterceptor.java:737)
        at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:480)
        at org.apache.directory.server.core.normalization.NormalizationInterceptor.delete(NormalizationInterceptor.java:170)
        at org.apache.directory.server.core.DefaultOperationManager.delete(DefaultOperationManager.java:586)
        at org.apache.directory.server.core.shared.DefaultCoreSession.delete(DefaultCoreSession.java:340)
        at org.apache.directory.server.core.shared.DefaultCoreSession.delete(DefaultCoreSession.java:325)
        at org.apache.directory.server.core.DefaultDirectoryService.revert(DefaultDirectoryService.java:1142)
Caused by: java.lang.NullPointerException
        at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.getChildCount(AbstractBTreePartition.java:2152)


Unfortunately, this happens randomly and I don't have clear reproduction steps. I run some unit test on AVL partitions on 2.0.0-M12. The test is like:

// test setup

service = new DirectoryServiceBuilder(...).buildService();
changeLog = new DefaultChangeLog();
changeLog.setExposed(true);
changeLog.setEnabled(true);
changeLog.init(service);
service.setChangeLog(changeLog);
service.setShutdownHookEnabled(true);

builder.buildPartition(...);
changeLog.tag();

// test case

changeLog.tag();

// some testing

service.sync();
service.revert(taggedRevision); // NPE here

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira