On 26/11/2008, at 9:21 AM, Emmanuel Lecharny wrote:
Matthew Phillips wrote:
The Avis event notification router and client library uses MINA.
http://avis.sourceforge.net/
Interesting... I see that you are using MINA since it's infancy
(1.0.2) and that you switched to 2.0.0-M3 in your trunk.
Do you mind giving us some feedback about the versions you used
(which one was the easiest, which one is the fastest, what are the
nasty problem you hit)?
MINA was easy to pick up, the protocol decoder thing and filters
fitted my mental model of how it should work -- it definitely saved a
great deal of time in developing Avis. I wish I had had the equivalent
when developing the C API :/
I only really switched to 2.0 so early (started with M1 I think) so I
could pull in asyncweb to add a web-based admin interface: it's been
quite a lot of work tracking API changes and running into MINA bugs.
2.0-M3 seems good at the moment though, and I was glad to see such
quick consensus on getting 2.0 stabilised soon.
Some of the things that have been problems:
* IO flushing: I've never been quite sure how to ensure that messages
still in the pipe are sent after a session close (). Shutting down a
server cleanly seems tricky, and I'm still not entirely sure that I'm
doing it right actually :/
* DIRMINA-435: An interesting heisenbug that only happened on Windows,
and only over a high-latency overseas link. Nasty, but we found the
bug in the end. https://issues.apache.org/jira/browse/DIRMINA-435.
* Direct vs heap buffers. Using direct buffers has caused several out
of memory errors running on Linux over long periods (weeks), switching
to heap buffers has fixed.
* Running multiple server listen endpoints and sharing thread pools
etc is a little tricky, especially when the server also creates
outgoing links via MINA.
I haven't run any performance benchmarks: apart from DIRMINA-609 and
the direct buffer thing, I've never had a performance issue with MINA.
Hope that random selection of anecdotes is useful!
Cheers,
Matthew.