[ 
https://issues.apache.org/jira/browse/DIRMINA-679?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12766979#action_12766979
 ] 

Franz Seidl commented on DIRMINA-679:
-------------------------------------

I've encountered similar behavior, i. e. the same stacktrace with slightly (1-3 
lines) different line numbers. 

Tried 2.0.0-M6 and Trunk (Revision 826281).

The application uses DefaultIoFilterChain and ProtocolCodecFilter. The 
IoFilterChain instance associated with an IoSession is modified after its 
initial creation using the method 
replace(String name, IoFilter newFilter) of DefaultIoFilterChain.

In contrast to the add...() and remove() methods, the three replace() methods 
do not invoke the onPreAdd(), onPostAdd(), onPreRemove() and onPostRemove() 
lifecycle methods on the IoFilter instance. But this is where 
ProtocolCodecFilter registers and deregisters its ProtocolEncoder and 
ProtocolDecoder with the IoSession.
If the previous IoFilter has been a ProtocolCodecFilter, too, its 
ProtocolEncoder and -Decoder are still in use after the replacement. If the 
previous IoFilter has been something else (in my case an IoFilterAdapter used 
as dummy), the ProtocolEncoder is not in place when needed => 
NullPointerException.

Avoiding replace() and do a remove()/add() instead might serve as a workaround.

I've modified the replace() methods to make it work for me and will attach the 
diff to this ticket. Please note, that only the first of the three methods is 
called from my code and none of them could be called "tested" without lying. 
;-) (In fact, I have not run the second and the third even once.)



> NullPointerException in ProtocolCodecFilter.filterWrite
> -------------------------------------------------------
>
>                 Key: DIRMINA-679
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-679
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 2.0.0-M4
>            Reporter: John J. Franey
>             Fix For: 2.0.0-RC1
>
>
> Looks like filterWrite obtains a reference from the session's attributes, but 
> the desired attribute is not there.
> I am running max of 250 datagram sockets under load test for my application.  
> Connections last about 60 seconds and released.  A new connection is made to 
> keep the total number of active connections up to 250.
> Over a period of two hours running this load test, this exception occured 
> twice.
> 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$7(DefaultIoFilterChain.java:501)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:814)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:740)
>       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:418)
>       at 
> org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:359)
> ....
> Caused by: java.lang.NullPointerException
>       at 
> org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:297)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:814)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:741)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:498)
>       at 
> org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:359)
> ....

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to