[ https://issues.apache.org/jira/browse/DIRSERVER-2047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14319615#comment-14319615 ]
Emmanuel Lecharny commented on DIRSERVER-2047: ---------------------------------------------- Tests were not conclusive. It's harder than I thought, and I'm still fighting to get a fix cut. Basicallly, it all boils down to a wrong cursor construction, as we don't set the initial position at the right place when browsing from a given key (which is what we do when we do a search using a specific position in the DIT). What happen is that we use the RdnIndex, and try to find the RDN corresponding to the BaseDN used. When found, we are supposed to take all the descendant of this RDN (that will be all the entries below this baseDN), which has the same parent ID - the ID for this BaseDN -. Depending on the B-tree layout, we may hit some corner cases where we have to move across a page, and it's not computed correctly. The fix is not simple as we have to move up and down in the BTree. > Some data can be lost when using ldapadd command to insert data into apacheds > ----------------------------------------------------------------------------- > > Key: DIRSERVER-2047 > URL: https://issues.apache.org/jira/browse/DIRSERVER-2047 > Project: Directory ApacheDS > Issue Type: Bug > Components: ldap > Affects Versions: 2.0.0-M19 > Environment: centOS 6.5 with openldap and apacheds installed > Reporter: linzhao > Priority: Blocker > Labels: LDAP > Fix For: 2.0.0-M20 > > Attachments: data.ldif, ordered-data.ldif, site.ldif, site_new.ldif, > site_topology_schema.ldif, supercluster_partition.ldif, test.jpg > > > In our system, we need to do data backup and restore for apacheds. For now, > we use the ldapsearch and ldapadd command to do BR function. We use > ldapsearch to backup apacheds data to be a ldif file and use ldapadd to > restore the data. But when the ldif is a little big, I always found that the > data can't be restored successfully, but the ladpadd command showed that the > data can be added successfully. No exceptions for ldapadd command. But the > restored data didn't exist in the node. This bug only happened when the ldif > file is a little big. I mean if the data entry greater than 500 entries. But > the node for backup and restore is using mavibot partition. Because I found > so many problems for jdbm. So I change it to mavibot partition. Another > question is that do you know is there some good way to do the data backup and > restore for apacheds? > May be my mavibot partition has some problems, so someone can tell me how to > create a mavibot partition in APACHEDS? Because the mavibot parttion I > created can't be viewed when click the "Open Configuration" in apacheds > studio. Also I used unboundid JDK to insert many entries apacheds and the > same problem happened. So someone can tell me how to config the mavibot > partition on APACHEDS? That's may be very helpful. > Below is the exceptions from apacheds when problems happened: > [16:21:41] INFO [org.apache.directory.server.ldap.LdapServer] - Ldap service > stopped. > [16:21:41] WARN > [org.apache.directory.server.core.shared.partition.DefaultPartitionNexus] - > Failed to flush partition data out. > org.apache.directory.api.ldap.model.exception.LdapOperationErrorException > at > org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.saveContextCsn(AbstractBTreePartition.java:3364) > at > org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.sync(DefaultPartitionNexus.java:319) > at > org.apache.directory.server.core.DefaultDirectoryService.shutdown(DefaultDirectoryService.java:1283) > at org.apache.directory.server.ApacheDsService.stop(ApacheDsService.java:600) > at > org.apache.directory.server.wrapper.ApacheDsTanukiWrapper.stop(ApacheDsTanukiWrapper.java:97) > at org.tanukisoftware.wrapper.WrapperManager$13.run(WrapperManager.java:3134) > Caused by: java.lang.NullPointerException > at > org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.saveContextCsn(AbstractBTreePartition.java:3350) > ... 5 more > [16:21:41] ERROR [org.apache.directory.server.wrapper.ApacheDsTanukiWrapper] > - Failed to stop the service. > org.apache.directory.api.util.exception.MultiException: ERR_265 Grouping many > exceptions on root nexus sync() > at > org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.sync(DefaultPartitionNexus.java:328) > at > org.apache.directory.server.core.DefaultDirectoryService.shutdown(DefaultDirectoryService.java:1283) > at org.apache.directory.server.ApacheDsService.stop(ApacheDsService.java:600) > at > org.apache.directory.server.wrapper.ApacheDsTanukiWrapper.stop(ApacheDsTanukiWrapper.java:97) > at org.tanukisoftware.wrapper.WrapperManager$13.run(WrapperManager.java:3134) > Nested exceptions to follow: > INFO | jvm 1 | 2015/02/02 17:11:06 | [17:11:06] WARN > [org.apache.directory.server.ldap.LdapProtocolHandler] - Unexpected exception > forcing session to close: sending disconnect notice to client. > INFO | jvm 1 | 2015/02/02 17:11:06 | java.io.IOException: Connection reset by > peer > INFO | jvm 1 | 2015/02/02 17:11:06 | at > sun.nio.ch.FileDispatcherImpl.read0(Native Method) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > sun.nio.ch.IOUtil.read(IOUtil.java:197) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:311) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:45) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:694) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1121) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > INFO | jvm 1 | 2015/02/02 17:11:06 | at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > INFO | jvm 1 | 2015/02/02 17:11:06 | at java.lang.Thread.run(Thread.java:745) -- This message was sent by Atlassian JIRA (v6.3.4#6332)