Nitin, You also need to switch your related classes to 2.0.7 type. There are some additional changes on class implementations as well. Take a look at this link before working on replacing jar. (Although it covers changes between 2.x and 1.x, that might still be helping) https://cwiki.apache.org/confluence/display/MINA/Changes+Between+2.x+and+1.x
Best, Emre -----Original Message----- From: Nitin [mailto:nit...@integramicro.com] Sent: Tuesday, November 19, 2013 3:32 PM To: users@mina.apache.org Subject: RE: MINA: How to close the sessions with MINA Thanks a ton for lightning fast reply and concrete suggestions on the problem shared. You mentioned that we should start using MINA V2.0.7 as many bugs are been fixed from V2.0.4 I presume I can simply replace the MINA Core Jar from V2.0.4 to V2.0.7, pls confirm. Thanks And Regards, Nitin Phuria -----Original Message----- From: Emmanuel Lécharny [mailto:elecha...@gmail.com] Sent: Tuesday, November 19, 2013 6:54 PM To: users@mina.apache.org Subject: Re: MINA: How to close the sessions with MINA Le 11/19/13 1:59 PM, Nitin a écrit : > Dear All, > > We have developed one server using Apache MINA V2.0.4 where > multiple vendors connect and send the messages which needs to be > processed and then response have to be sent back to vendor. Currently > we have put a strategy that vendor has to send one message per > connection and after getting response or timeout vendor has to close the > connection. So far, so good. > > > > But after sometime we realized that some of the vendors are not > closing connections and due that many sessions are remaining idle. To tackle > this we started using the sessionIdle(IoSession session, IdleStatus status) > event for each vendor connection and we use to close the session in > this event with session.close(true); That's the right way to do it. > > > > But then I saw this link where it was saying that session.close(true) > may cause issue > http://comments.gmane.org/gmane.comp.apache.mina.user/4616 No. > > so we changed it to session.close(false); Wrong. It will wait for all the pending messages to be sent to the (vanished) client. That means forever. > > > > Now we are facing issue of Broken pipes. Suddenly we start getting > below ERROR and it will keep coming continuously and fills the log > files only with > this error. > > > > java.io.IOException: Broken pipe > > at sun.nio.ch.FileDispatcher.write0(Native Method) It's plain normal : the server is trying to send messages to a now disconnected server. And it will try again and again. > > > We have observed that once above issue comes we end up in restarting > our MINA based server or sometimes the OS to bring it back to working state. Yes. > > I would like to know in details how I can identify the idle session > and with > our strategy of one message per connection how we can identify the > idle sessions and close them peacefully. Again, just do what you suggested : manage the sessionIdle() event and do close(true) (ie, clise with imediate effect, discarding the pending messages). > > > > Thanks in advance. Looking for concrete solution. close(true) and sessionIdle managed is a concrete solution to your problem. Don't read threads and deduce that there is a problem. If you have an issue with close(true) and idle management, then please post on this mailing list so that we can help you with valid solutions. Ah, btw, I urge you to switch to 2.0.7. 2.0.4 is more than 2 years old, and many bugs have been fixed since. Thnks for using MINA ! -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com