You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Pierre-Arnaud Marcelot (Commented) (JIRA)" <ji...@apache.org> on 2011/10/25 11:18:32 UTC

[jira] [Commented] (DIRAPI-55) org.apache.mina.filter.codec.ProtocolDecoderException: java.lang.OutOfMemoryError: ;

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

Pierre-Arnaud Marcelot commented on DIRAPI-55:
----------------------------------------------

I moved back the issue to the LDAP API project.

We have debugged this a little with Emmanuel and it seems to be related with logs.

When run inside our LDAP API project, the List2.java class behaves well and does not crash.

Adding a log4j.properties file in the dedicated project seem to fix the issue (I will attach one to the issue, for you to test if you like).

Very weird... We need to dig more to find the exact cause of the issue.
                
> org.apache.mina.filter.codec.ProtocolDecoderException: java.lang.OutOfMemoryError: ;
> ------------------------------------------------------------------------------------
>
>                 Key: DIRAPI-55
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-55
>             Project: Directory Client API
>          Issue Type: Bug
>    Affects Versions: 1.0.0-M8
>         Environment: jdk1.6, windows 7, Apache Directory Studio Version: 1.5.3.v20100330, apache ldap API, apache-ldap-api-1.0.0-M8-bin
>            Reporter: Aswartha N Rupa
>            Assignee: Pierre-Arnaud Marcelot
>            Priority: Blocker
>              Labels: API, LDAP, LDAPPRotocolDecoder, ProtocolDecoderException, mina, outofmemory
>             Fix For: 1.0.0-M9
>
>         Attachments: Apache-LDAP_API.zip, List2.java, example.ldif
>
>
> A simple program that performs a search on the sample ldif shipped with apache DS>
> public class List {
> 	public static void main(String[] args) throws Exception{
> 		LdapConnection connection = new LdapNetworkConnection( "localhost", 10389 , false);
> 		System.out.println("got connection");
> 		
>         connection.bind( "uid=admin,ou=system", "secret" );
>         SearchRequest searchRequest = new SearchRequestImpl();
>         searchRequest.setBase(new Dn("ou=Users,dc=example,dc=com"));
>         searchRequest.setFilter("(&(sn=*)(mail=mplanck*))");
>         searchRequest.setScope(SearchScope.ONELEVEL);
>         String [] attributes = { "cn", "mail", "telephonenumber" };
>         searchRequest.addAttributes(attributes);
>       
>         SearchCursor cursor = connection.search(searchRequest);
>         
>         if (cursor.next()) {
>         	Response response = cursor.get();
>         	System.out.println( ((SearchResultEntry)response).getEntry() );
>         	System.out.println( "Trying to close the cursor" );
>             cursor.close();
>         	
>         }
>         //SearchResultDone done = cursor.getSearchResultDone();
>         System.out.println( "Trying to close the connection" );
> 		connection.close();
> 		System.out.println( "Trying to close the cursor done" );
> 	}
> }
> Its prints the first record and waits for more than 10-15 minutes (after the connection.close() is invoke on main thread) giving out an outofmemory error on protocol decoder. I see two threads [NioProcessor] and [NioSocketConnector]  in Running state even after main thread executed its last statement.
> With output: 
> log4j:WARN No appenders could be found for logger (org.apache.directory.ldap.client.api.LdapConnectionConfig).
> log4j:WARN Please initialize the log4j system properly.
> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
> got connection
> Entry
>     dn: uid=mplanck,ou=Users,dc=example,dc=com
>     mail: mplanck@example.com
>     cn: Max Planck
>     telephonenumber: +1 904 982 6882
> Trying to close the cursor
> Trying to close the connection
> Trying to close the cursor done
> org.apache.mina.filter.codec.ProtocolDecoderException: java.lang.OutOfMemoryError: Java heap space (Hexdump: 30 4E 02 01 02 73 49 04 47 6C 64 61 70 3A 2F 2F 61 64 2E 65 78 61 6D 70 6C 65 2E 63 6F 6D 2F 75 69 64 3D 70 64 69 72 61 63 2C 25 32 30 6F 75 3D 55 73 65 72 73 2C 25 32 30 64 63 3D 65 78 61 6D 70 6C 65 2C 64 63 3D 63 6F 6D 3F 3F 62 61 73 65 30 54 02 01 02 73 4F 04 4D 6C 64 61 70 3A 2F 2F 6F 70 65 6E 6C 64 61 70 2E 65 78 61 6D 70 6C 65 2E 63 6F 6D 2F 75 69 64 3D 65 66 65 72 6D 69 2C 25 32 30 6F 75 3D 55 73 65 72 73 2C 25 32 30 64 63 3D 65 78 61 6D 70 6C 65 2C 64 63 3D 63 6F 6D 3F 3F 62 61 73 65 30 56 02 01 02 73 51 04 4F 6C 64 61 70 3A 2F 2F 61 70 61 63 68 65 64 73 2E 65 78 61 6D 70 6C 65 2E 63 6F 6D 2F 75 69 64 3D 72 66 65 79 6E 6D 61 6E 2C 25 32 30 6F 75 3D 55 73 65 72 73 2C 25 32 30 64 63 3D 65 78 61 6D 70 6C 65 2C 64 63 3D 63 6F 6D 3F 3F 62 61 73 65 30 0C 02 01 02 65 07 0A 01 00 04 00 04 00)
> 	at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:251)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
> 	at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:715)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141)
> 	at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.OutOfMemoryError: Java heap space
> 	at java.nio.CharBuffer.wrap(CharBuffer.java:350)
> 	at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:238)
> 	at java.lang.StringCoding.encode(StringCoding.java:272)
> 	at java.lang.String.getBytes(String.java:946)
> 	at org.apache.directory.shared.util.Strings.getBytesUtf8(Strings.java:1426)
> 	at org.apache.directory.shared.ldap.model.name.Dn.apply(Dn.java:1222)
> 	at org.apache.directory.shared.ldap.model.name.Dn.<init>(Dn.java:283)
> 	at org.apache.directory.shared.ldap.model.name.Dn.<init>(Dn.java:207)
> 	at org.apache.directory.shared.ldap.model.url.LdapUrl.parseDN(LdapUrl.java:676)
> 	at org.apache.directory.shared.ldap.model.url.LdapUrl.parse(LdapUrl.java:198)
> 	at org.apache.directory.shared.ldap.model.url.LdapUrl.<init>(LdapUrl.java:308)
> 	at org.apache.directory.shared.ldap.codec.actions.searchResultReference.StoreReference.action(StoreReference.java:97)
> 	at org.apache.directory.shared.ldap.codec.actions.searchResultReference.StoreReference.action(StoreReference.java:47)
> 	at org.apache.directory.shared.asn1.ber.grammar.AbstractGrammar.executeAction(AbstractGrammar.java:138)
> 	at org.apache.directory.shared.asn1.ber.Asn1Decoder.treatTLVDoneState(Asn1Decoder.java:599)
> 	at org.apache.directory.shared.asn1.ber.Asn1Decoder.decode(Asn1Decoder.java:735)
> 	at org.apache.directory.shared.ldap.codec.api.LdapDecoder.decode(LdapDecoder.java:157)
> 	at org.apache.directory.shared.ldap.codec.protocol.mina.LdapProtocolDecoder.decode(LdapProtocolDecoder.java:79)
> 	at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
> 	at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> 	at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:715)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68)
> 	at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141)
> 	at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira