You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Kiran Ayyagari (JIRA)" <ji...@apache.org> on 2013/10/24 09:15:02 UTC

[jira] [Commented] (DIRSERVER-1908) Connection lost when use persistent search and move entry in ApacheDS

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

Kiran Ayyagari commented on DIRSERVER-1908:
-------------------------------------------

Which version of server you are running?, do you have any test code to reproduce this?

I have tested this with the below code and I see it working as expected

    @Test
    public void testPsearchMove() throws Exception
    {
        LdapNetworkConnection connection = new LdapNetworkConnection( "localhost", ldapServer.getPort() );
        connection.bind( "uid=admin,ou=system", "secret" );
        
        Entry newOu = new DefaultEntry( "uid=persist, ou=users,ou=system" );
        newOu.add( "objectClass", "inetOrgPerson" );
        newOu.add( "cn", "persist_cn" );
        newOu.add( "sn", "persist_sn" );
        
        connection.add( newOu );
        
        SearchRequest sr = new SearchRequestImpl();
        sr.setBase( new Dn( BASE ) );
        sr.setFilter( "(objectClass=*)" );
        sr.setScope( SearchScope.SUBTREE );
        sr.addControl( new PersistentSearchImpl() );
        
        final SearchCursor cursor = connection.search( sr );
        
        final List<Entry> entryList = new ArrayList<Entry>();
        
        Runnable r = new Runnable()
        {
            
            @Override
            public void run()
            {
                try
                {
                    while( cursor.next() )
                    {
                        entryList.add( cursor.getEntry() );
                    }
                }
                catch( Exception e )
                {
                    throw new RuntimeException( e );
                }
            }
        };
        
        new Thread( r ).start();
        
        connection.move( newOu.getDn(), newOu.getDn().getParent().getParent() );
        Thread.sleep( 1000 );
        assertFalse( entryList.isEmpty() );
        assertEquals( 1, entryList.size() );
        assertEquals( "uid=persist,ou=system", entryList.get( 0 ).getDn().getName() );
        
        connection.close();
    }


> Connection lost when use persistent search and move entry in ApacheDS
> ---------------------------------------------------------------------
>
>                 Key: DIRSERVER-1908
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1908
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 2.0.0-M14
>         Environment: Windows 7 Professional 32-bit, Inter Core i3-2310,4GB Memory
>            Reporter: Robert Hou
>
> Step:
> 1.Do persistent search with ApacheDS.
> 2.Move one entry(InetorgPerson) from one ou to another ou in ApacheDS.
> Actual Result(from Apache Console):
> [10:17:10] WARN [org.apache.directory.server.ldap.LdapProtocolHandler] - Unexpected exception forcing session to close: sending disconnect notice to client.
> org.apache.mina.filter.codec.ProtocolEncoderException: java.lang.NullPointerException
> 	at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:339)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:47)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:775)
> 	at org.apache.mina.filter.executor.ExecutorFilter.filterWrite(ExecutorFilter.java:614)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:47)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:775)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:705)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:482)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:475)
> 	at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:494)
> 	at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:439)
> 	at org.apache.directory.server.ldap.handlers.PersistentSearchListener.entryMoved(PersistentSearchListener.java:194)
> 	at org.apache.directory.server.core.event.EventInterceptor$4.run(EventInterceptor.java:171)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.NullPointerException
> 	at org.apache.directory.api.ldap.codec.decorators.SearchResultEntryDecorator.computeLength(SearchResultEntryDecorator.java:308)
> 	at org.apache.directory.api.ldap.codec.api.LdapEncoder.computeMessageLength(LdapEncoder.java:247)
> 	at org.apache.directory.api.ldap.codec.api.LdapEncoder.encodeMessage(LdapEncoder.java:159)
> 	at org.apache.directory.api.ldap.codec.protocol.mina.LdapProtocolEncoder.encode(LdapProtocolEncoder.java:71)
> 	at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:308)
> 	... 17 more



--
This message was sent by Atlassian JIRA
(v6.1#6144)