It looks like the present trunk of MINA in the repository
has a bug. Updating from M7 built on 06.06.2009 to the current trunk
broke some of our tests.
I've tried to build it today and ran our application tests, some of
Reverting back to 06.06.2009 build has fixed the problem.
At the first look it appears that session.close(false) behaves like
session.close(true), as a result some messages are truncated (not
being flushed on session.close(false)).
If I comment out a call to session.close(false) (i.e. not closing the
session at all when needed), the problem goes away.
This behavior is inconsistent, test fails/succeeds randomly. On the
first run it may pass, on the second run it may fail. Test fails about
10% of runs. The part which is not flushed is also random. Could be a
race condition somewhere in MINA introduced in the last 2 months.
I can't provide a test case yet, but our application is a kind of
proxy, so it behaves like this:
1. client connects to the app and send a request
2. app connects to another server and sends a request
3. app gets a reply from the server and sends it back to the client
4. when another server closes the connection, app is closing the
connection with the client using session.close(false)
The app may be still flushing data to client when closing the
connection. As I said it worked fine with previous MINA versions, but
has broken only recently.
We are using OrderedThreadPoolExecutor and CumulativeProtocolDecoder
if that matters.