I'm not calling remove(session) anywhere.  I'm not calling my own close()--it 
disposes of the connector.  We've established that there's most likely an error 
somewhere, but we don't know where.  There are no particular control characters 
except for NULL that will cause the thing to die unexpectedly.

It seems to be some kind of problem with my specific message:

05142013023013316|123.123.123.0|0.0.0.0|AC|21|ADB=1=0=1368556811567|d9b725009b4eb01229b6e222d7965e6f

Whereas this message went through:

05142013024007883|123.123.123.0|0.0.0.0|PE|5|/////|4caa791091d21d23e63637080226f370
05142013024007883|123.123.123.0|0.0.0.0|PD|5|/////|4caa791091d21d23e63637080226f370
05142013023949165|123.123.123.0|0.0.0.0|PON|1|//////|8d9c307cb7f3c4a32822a51922d1ceaa

OK.  So I'm stuck.  How do I turn on trace level logging?  



-----Original Message-----
From: Emmanuel Lécharny [mailto:[email protected]] 
Sent: Tuesday, May 14, 2013 1:49 PM
To: [email protected]
Subject: Re: Help with NioSocketConnector

Le 5/14/13 2:58 PM, Whitener, Winona T. a écrit :
> I finally just dropped a new exception and stack trace on the 
> sessionClosed(IoSession session) method.  The results:
>
> java.lang.Exception: testing against close
>       at 
> communication.socket.MinaClientHandler.sesionClosed(MinaClientHandler.java:57)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.sessionClosed(DefaultIoFilterChain.java:642)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterchain.callNextSessionClosed(DefaultIoFilterChain.java:382)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$900(DefaultIoFilterChain.java:47)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:750)
>       at 
> org.apache.mina.filter.codec.ProtocolCodecfilter.sessionClosed(ProtocolCedecFilter.java:369)
>       at 
> org.apache.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:382)
>       at 
> org.apache.core.filterchain.DefaultIoFitlerChain.access$900(DefaultIoFilterIoChain.java:47)
>       at 
> org.apache.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:750)
>       at 
> org.apache.mina.filter.logging.LoggingFilter.sessionClosed(LoggingFilter.java:238)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:382)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$900(DefaultIoFilterChain.java:47)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:750)
>       at 
> org.apache.mina.core.filterchain.IoFilterAdapter.sessionClosed(ioFilterAdapter.java:88)
>       at 
> org.apache.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:382)
>       at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireSessionClosed(DefaultIoFilterChain.java:375)
>       at 
> org.apache.mina.core.service.IoServiceListenerSupport.fireSessionDestroyed(IoServiceListenerSupport.java:244)
>       at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.removeNow(AbstractPollingIoProcessor.java:600)
>       at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.removeSessions(AbstractPollingIoProcessor.java:560)
>       at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$800(AbstractPollingIoProcessor.java:67)
>       at 
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1132)
>       at 
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>       at 
> java.util.concurrent.ThreadPoolExecutor.$Worker.run(ThreadPoolExecutor.java:603)
>       at java.lang.Thread.run(Thread.java:722)
>
>
> This is when I do a session.write(message) when message is passed in as an 
> argument.  Ironically, commenting out this line will allow it to run fine.  
> Giving it an explicit string (i.e. session.write("Mymessage") ) may or may 
> not work--it's a toss up.  I've tried doing all lower case (mixed results), a 
> numeric string ("123456"), a plain string ("quick brown fox").

The removeSessions() method is only called when some session has been 
specifically called for removal. his can occur in three cases :
- the remove( session ) metho dhas been called
- an exception occured while reading or writing data in the socket
- ther eis some fragmentation which is not corretly handled.

This stack traces just shows that some session closing is being done, it gives 
no information about the why.

Here, I'm stuck, unless you provides some code that I can run and debug...


--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com 

Reply via email to