[ 
https://issues.apache.org/jira/browse/DIRSERVER-2047?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

linzhao updated DIRSERVER-2047:
-------------------------------
    Comment: was deleted

(was: This is my test case to reproduce the issue.
    @Test
    public void testBrowseBTree500() throws IOException, 
BTreeAlreadyManagedException, KeyNotFoundException
    {
        String uid1 = UUID.randomUUID().toString();
        String uid2 = UUID.randomUUID().toString();
        String uid3 = UUID.randomUUID().toString();
        System.out.println("uid1: " + uid1);
        System.out.println("uid2: " + uid2);
        System.out.println("uid3: " + uid3);
        // Inject some data
        for ( int i = 0; i < 50; i++ )
        {
            btreeStr.insert( uid1, UUID.randomUUID().toString());
        }
        
        for ( int i = 0; i < 50; i++ )
        {
            btreeStr.insert( uid2, UUID.randomUUID().toString());
        }
        
        for ( int i = 0; i < 50; i++ )
        {
            btreeStr.insert( uid3, UUID.randomUUID().toString());
        }

        // Now, browse the BTree starting from 0 to the end
        TupleCursor<String, String> cursor = btreeStr.browseFrom(uid1);
        assertTrue( cursor.hasNext() );
        String expected = uid1;
        String key = null;
        int count = 0;
        while ( cursor.hasNext() )
        {
            Tuple<String, String> tuple = cursor.next();
            key = tuple.getKey();
            count ++;
            assertEquals( expected, key );
        }
        assertEquals( 50, count );
        
        
        cursor = btreeStr.browseFrom(uid2);
        assertTrue( cursor.hasNext() );
        expected = uid2;
        key = null;
        count = 0;
        while ( cursor.hasNext() )
        {
            Tuple<String, String> tuple = cursor.next();
            key = tuple.getKey();
            count ++;
            assertEquals( expected, key );
        }
        assertEquals(100, count );
        
        
        cursor = btreeStr.browseFrom(uid3);
        assertTrue( cursor.hasNext() );
        expected = uid3;
        key = null;
        count = 0;
        while ( cursor.hasNext() )
        {
            Tuple<String, String> tuple = cursor.next();
            key = tuple.getKey();
            count ++;
            assertEquals( expected, key );
        }
        assertEquals(150, count );
    })

> 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)

Reply via email to