I am using MINA 2.0.0.RC1, I built my own protocol codec filter to deal with messages. All of my tests went fine in test environments and I went live recently. I am processing almost a message every second.
The issue that I experienced in the production environment is random null pointer exceptions. I suspect that they are happening when I try to write back an ack message to the session in my custom message handler. Following is the exception trace: org.apache.mina.filter.codec.ProtocolEncoderException: java.lang.NullPointerException at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:313) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:506) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:46) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:805) at org.apache.mina.filter.executor.ExecutorFilter.filterWrite(ExecutorFilter.java:706) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:506) at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:46) at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:805) at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:731) at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:506) at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:498) at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:428) at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:369) at com.cmt.mkcgateway.server.MobileKnowledgeMessageHandler.messageReceived(MobileKnowledgeMessageHandler.java:118) at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:713) 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:793) at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:71) at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63) at org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:480) at org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:434) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:298) I use unorderedthreadpoolexecutor with 100 threads, what might be the issue here? Do you think that there is a race condition due to the load? Or is it a problem with the connection? How can I always correctly send back the ack without experiencing this problem? Most of the messages are processed ok, Every 6-7 minutes I experience one like this. Erinc
