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