On Tue, Mar 22, 2016 at 9:06 AM, Thomas Papke <thomas.pa...@icw.de> wrote:
> Hello all,
>
> I want to share my findings regarding the camel-mina2 component (camel 
> 2.16.2). From my understanding, both of them are bugs, but maybe someone 
> could provide a feedback and/or create a jira ticket.
>
>
> 1.       Thread leak for camel-mina2 consumers
> The camel-mina2 consumer 
> (org.apache.camel.component.mina2.Mina2Consumer.doStart()) internally start a 
> Mina2 IoAcceptor (org.apache.mina.core.service.IoAcceptor), but the 
> org.apache.camel.component.mina2.Mina2Consumer.doStop() do not invoke 
> acceptor.dispose(true); to release the threadpool started by Mina2.
>

Yeah that sounds like a bug, you are welcome to log a JIRA and provide
a patch/PR.


> Current behavior: While stopping the web application, the threadpool started 
> by Mina2 IoAcceptor will not be stopped, so we have several thread which do 
> not properly shutdown.
>
> Current workaround: I create custom CamelShutdownStrategy and collect all 
> Mina2Consumer and invoke Mina2consumer.getAcceptor.dispose(true); OR as an 
> alternative create a dedicated consumer and overwrite the stop method of the 
> Mina2 consumer as seen here: 
> https://github.com/oehf/ipf/commit/12fdde8df7ebbbb7cd9966aadeab3ea3bed8fe75
>
> Suggested bugfix: Call the IoAcceptor dispose method in the Mina2Consumer 
> stop processing.
>
>
> 2.       Mina2Consumer exception handler do close session also for IOException
> The camel-mina2 consumer Exception handler 
> (org.apache.camel.component.mina2.Mina2Consumer.ReceiveHandler.exceptionCaught(IoSession,
>  Throwable)
> Is an implementation of the Mina2 interface 
> org.apache.mina.core.service.IoHandler. The Javadoc Mina2 documentation of 
> exceptionCaught explicitly mention, that Mina2 will close the connection for 
> all IOExceptions automatically. But camel-mina2 seems to close the connection 
> for any kind of exception.
>
> Current behavior: If an error occurs on the transport layer (e.g. secure TCP 
> connection where the certificate was not trusted and a SSLException occure), 
> I saw the following warning:
> org.apache.camel.component.mina2.Mina2Consumer#exceptionCaught(376) - Closing 
> session as an exception was thrown from MINA
> And also an error from mina2:
> org.apache.mina.filter.ssl.SslHandler#destroy(210) - Unexpected exception 
> from SSLEngine.closeInbound().
> " javax.net.ssl.SSLException: Inbound closed before receiving peer's 
> close_notify: possible truncation attack?
>
> From a functional perspective, beside the annoying log entries, it looks like 
> the SSL error details are sometime not send properly back to the client.
>
> Current workaround: I don't have one.
>
> Suggested bugfix: Implement the Mina2Consumer exception handling similar to 
> org.apache.mina.handler.stream.StreamIoHandler.exceptionCaught(IoSession, 
> Throwable) and do not handle IoException and simply rethrow them.
>
>
> Any feedback on my findings are welcome.
>
> Regards,
> Thomas
>
>
> InterComponentWare AG:
> Vorstand: Peter Kirschbauer (Vors.), Matthias Gl?ck
> Aufsichtsratsvors.: Prof. Dr. Christof Hettich
> Unternehmenssitz: 69190 Walldorf, Altrottstra?e 31
> AG Mannheim HRB 351761 / USt.-IdNr.: DE 198388516
>



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to