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

Reply via email to