To me, it looks like a bug in MINA, even if you "fixed" it by properly closing the socket on the client. The client should never be able to generate NPE's on the server-side.
Could you please file a JIRA ? And maybe attach some code. Thanks, Maarten On Tue, Apr 7, 2009 at 9:11 PM, David Rosenstrauch <[email protected]> wrote: > Hmmm .... I think I might have fixed it. > > I was just dropping the connection on the client side when I was finished. > I changed it to issue a proper "close connection" command to the server and > it looks like the problem's gone away. > > DR > > David Rosenstrauch wrote: >> >> And another similar error as well: >> >> SEVERE: Error occurred during message handling >> org.apache.mina.filter.codec.ProtocolDecoderException: >> java.lang.NullPointerException (Hexdump: 68 65 6C 70 0A 73 74 61 74 73 0A 71 >> 75 65 72 79 20 31 32 33 34 0A) >> at >> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:234) >> at >> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) >> at >> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48) >> at >> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:802) >> at >> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:59) >> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64) >> at >> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:552) >> at >> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:544) >> at >> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:488) >> at java.lang.Thread.run(Thread.java:619) >> Caused by: java.lang.NullPointerException >> at >> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:224) >> ... 9 more >> >> Thanks, >> >> DR >> >> David Rosenstrauch wrote: >>> >>> Having a strange situation happening. >>> >>> I have a MINA-based server I've written that's up and running and works >>> fine. I recently added a new bit of functionality to it, however, and it's >>> now throwing a NPE. >>> >>> The server uses a text-based protocol (using TextLineCodecFactory). I've >>> added the capability to give the server a command line parm which is the >>> name of a text file, containing startup commands that the server should >>> execute after it starts up. I'm doing this by having the server open a java >>> socket to the server's port on localhost, read the text file and write (and >>> flush) each command out to the socket. >>> >>> This is generally working, and the server is receiving and processing >>> each command (not always in the order sent, but I'm guessing that's an >>> outgrowth of my using a thread pool, and that's not a problem anyway). But >>> from time to time, the server is spitting out this error: >>> >>> SEVERE: EXCEPTION : >>> org.apache.mina.filter.codec.ProtocolEncoderException: >>> java.lang.NullPointerException >>> at >>> org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:312) >>> at >>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:506) >>> at >>> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:48) >>> at >>> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:814) >>> at >>> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:65) >>> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:64) >>> at >>> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:552) >>> at >>> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:544) >>> at >>> org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:488) >>> at java.lang.Thread.run(Thread.java:619) >>> Caused by: java.lang.NullPointerException >>> at >>> org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:297) >>> ... 9 more >>> >>> >>> Noteworthy aspects of my configuration: >>> >>> * using the M4 release of MINA >>> >>> * I'm not pausing between sending commands; i.e., I'm write and flushing >>> them down the socket as quickly as Java can send them >>> >>> * using both a read and a write thread pool >>> >>> * building my filter chain as follows: >>> protocolAcceptor = new NioSocketAcceptor(); >>> protocolAcceptor.setDefaultLocalAddress(new >>> InetSocketAddress(protocolPort)); >>> protocolAcceptor.setReuseAddress(true); >>> DefaultIoFilterChainBuilder filterChainBuilder = >>> protocolAcceptor.getFilterChain(); >>> filterChainBuilder.addLast("logger", new >>> LoggingFilter(ProfileCacheServer.class)); >>> readerThreadPool = new OrderedThreadPoolExecutor(); >>> filterChainBuilder.addLast("readExecutor", new >>> ExecutorFilter(readerThreadPool, IoEventType.MESSAGE_RECEIVED)); >>> filterChainBuilder.addLast("codec", new ProtocolCodecFilter(new >>> TextLineCodecFactory(ParseConstants.UTF8_CHARSET))); >>> writerThreadPool = new OrderedThreadPoolExecutor(); >>> filterChainBuilder.addLast("writeExecutor", new >>> ExecutorFilter(writerThreadPool, IoEventType.WRITE)); >>> protocolAcceptor.setHandler(protocolHandler); >>> >>> >>> Anyone have any idea what this error could be? I can't understand how >>> ProtocolCodecFilter.filterWrite could be throwing a NPE. It's basically >>> saying that the encoder is null, but I don't see how that could be. >>> >>> Any help appreciated! >>> >>> TIA, >>> >>> DR >>> >> > >
