Uploaded image for project: 'Directory ApacheDS'
  1. Directory ApacheDS
  2. DIRSERVER-1853

NPE in getChildCount() when reverting in an AVL partition

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Reopened
    • Major
    • Resolution: Unresolved
    • 2.0.0-M12
    • None
    • avl
    • None

    Description

      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

      Attachments

        Activity

          People

            Unassigned Unassigned
            pkubowicz Piotr Kubowicz
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: