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