Yannick Lecaillez created DIRMINA-894:
-----------------------------------------

             Summary: java.io.IOException: Broken Pipe infinite loop
                 Key: DIRMINA-894
                 URL: https://issues.apache.org/jira/browse/DIRMINA-894
             Project: MINA
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.0.4
            Reporter: Yannick Lecaillez
            Priority: Critical


An infinite java.io.IOException can occurs in when a session.close(false) is 
called in a IoFilter.exceptionCaught().

Indeed:

AbstractPollingIoProcessor.flush(time) (line 777): 
  This method flush all sessions contained in flushingSession. It does that 
until there is no more flushingSession

AbstractPollingIoProcessor.flushNow(session,time) (line 832):
  Process write request. 
  If an exception occurs during the write, IoFilter.exceptionCaught() is called 
;

IoFilter.exceptionCaught() (user code): 
  call session.close(false);

AbstractIoSession.close(false): (line 286) call closeOnFlush()

AbstractIoSession.closeOnFlush() : 
  add a CLOSE_REQUEST into the WriteQueue and flush() the session.
  this session is then appended to the flushingSessions. 
  
Since the exception handling code in flushNow() doesn't reset the 
session.getCurrentWriteRequest(), the writeRequestQueue is never polled and the 
processor will try to process the same write request infinitly.



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to