Björn Pettersson created CAMEL-21909:
----------------------------------------

             Summary: camel-netty-http: SslClosedEngineException during 
exception handling
                 Key: CAMEL-21909
                 URL: https://issues.apache.org/jira/browse/CAMEL-21909
             Project: Camel
          Issue Type: Bug
          Components: camel-netty-http
    Affects Versions: 4.8.5
         Environment: Camel 4.8.x

Spring Boot 3.4.x

eclipse-temurin:17-jre-alpine image
            Reporter: Björn Pettersson


We use camel-netty-http and have recently seen a few errors on https 
connections which indicate some issue with exception handling. It may be 
applicable to the camel-netty component as well.

>From the stacktrace below it seems like there is a connection issue, which 
>closes the SSLEngine and triggers ClientChannelHandler.exceptionCaught(...). 
>This will call NettyHelper.close(...) which fails with 
>"SslClosedEngineException: SSLEngine closed already"

The result is that the original exception is hidden, making it harder to 
resolve what is the root cause of the connection issue.

Unfortunately I have not found a good way to reproduce.

 
{code:java}
Stacktrace=io.netty.handler.ssl.SslClosedEngineException: SSLEngine closed 
already
    at io.netty.handler.ssl.SslHandler.wrap(SslHandler.java:924)
    at io.netty.handler.ssl.SslHandler.wrapAndFlush(SslHandler.java:828)
    at io.netty.handler.ssl.SslHandler.flush(SslHandler.java:809)
    at io.netty.handler.ssl.SslHandler.flush(SslHandler.java:2129)
    at 
io.netty.handler.ssl.SslHandler.closeOutboundAndChannel(SslHandler.java:2098)
    at io.netty.handler.ssl.SslHandler.close(SslHandler.java:760)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:761)
    at 
io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:733)
    at 
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.close(CombinedChannelDuplexHandler.java:505)
    at 
io.netty.channel.ChannelOutboundHandlerAdapter.close(ChannelOutboundHandlerAdapter.java:77)
    at 
io.netty.channel.CombinedChannelDuplexHandler.close(CombinedChannelDuplexHandler.java:316)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:757)
    at 
io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:733)
    at 
io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:560)
    at 
io.netty.channel.DefaultChannelPipeline.close(DefaultChannelPipeline.java:906)
    at io.netty.channel.AbstractChannel.close(AbstractChannel.java:243)
    at org.apache.camel.component.netty.NettyHelper.close(NettyHelper.java:123)
    at 
org.apache.camel.component.netty.handlers.ClientChannelHandler.exceptionCaught(ClientChannelHandler.java:98)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
    at 
io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)
    at 
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireExceptionCaught(CombinedChannelDuplexHandler.java:424)
    at 
io.netty.channel.ChannelHandlerAdapter.exceptionCaught(ChannelHandlerAdapter.java:92)
    at 
io.netty.channel.CombinedChannelDuplexHandler$1.fireExceptionCaught(CombinedChannelDuplexHandler.java:145)
    at 
io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:143)
    at 
io.netty.channel.CombinedChannelDuplexHandler.exceptionCaught(CombinedChannelDuplexHandler.java:231)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
    at 
io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)
    at io.netty.handler.ssl.SslHandler.exceptionCaught(SslHandler.java:1222)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
    at 
io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)
    at 
io.netty.channel.DefaultChannelPipeline$HeadContext.exceptionCaught(DefaultChannelPipeline.java:1324)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
    at 
io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
    at 
io.netty.channel.DefaultChannelPipeline.fireExceptionCaught(DefaultChannelPipeline.java:856)
    at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.handleReadException(AbstractNioByteChannel.java:125)
    at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:177)
    at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)
    at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:732)
    at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:658)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
    at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Unknown Source) {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to