Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.6.0
-
None
-
Windows XP
-
Patch Available
Description
A sample scenario where both MINA producer(s) and consumer(s) are used in the same route (e.g. some kind of dispatching or proxying):
from("mina:tcp://localhost:8888?lazySessionCreation=true&sync=true")
.to("mina:tcp://localhost:7777?lazySessionCreation=true&sync=true");
from("mina:tcp://localhost:7777?lazySessionCreation=true&sync=true")
.process(/prepare answer/);
Due to improper configuration of MINA acceptor and connector instances in MinaComponent#createSocketEndpoint(), no more than 15 incoming threads can be served at port 8888 – the producer becomes unable to open an outgoing session. This is actually an issue of MINA, not of Camel – a test application written using "raw" MINA shows the same behaviour.
A solution is to apply configuration rules described, e.g., at http://mina.apache.org/configuring-thread-model.html, as done in the attached patch.
Moreover, the standard Camel-MINA producer is not thread-safe – actually a well-known point. A second attached file contains a thread pool-based reentrant version, which can be efficiently used for TCP endpoints with both parameters 'lazySessionCreation' and 'sync' set to true.