"Pipe broken" IOExceptions countered on non-active stream connections
---------------------------------------------------------------------
Key: DIRMINA-129
URL: http://issues.apache.org/jira/browse/DIRMINA-129
Project: Directory MINA
Type: Bug
Versions: 0.8.1
Environment: All
Reporter: dave irving
Assigned to: Trustin Lee
Priority: Minor
The StreamIOHandler implementation uses PipedInput/Output streams for providing
read data.
PipedInputStream is quite strict about the relationship between the producer
and consumer thread.
When blocking on a read, PipedInputStream checks every second to see if the
last producer thread to write to it is still alive. If it detects that the
producer thread is no longer alive, an IO Exception is thrown indicating "Pipe
Broken".
This causes a problem in Mina becuase worker threads in the ThreadPoolFilter
have a "keep alive time" (default is one second). So, if a user is blocked on a
stream IO read (really a PipedInputStream), and the last ThreadPoolFilter
thread which produced data for the stream idles out, the user encounters a
"Pipe Broken" IOException (not related to session idle).
Users can currently work around the problem by increasing the keep-alive time
on the ThreadPoolFilter.
My gut feeling is that ditching PipedInputStream / PipedOutputStream in favour
of something more suited to Minas needs would be a good solution to the problem.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira