Hello!
From time to time, we get some "Failed to create SSL connection" errors and we can't figure out the reason.
It's a small percentage of all HTTP requests we do, but still, a bit annoying.
Do you have any clue, idea or suggestion on why we are getting these errors?
Thanks!
We found 2 patterns:
1 - For some reason the communication channel seems to be closed:
Exception: Failed to create SSL connection
javax.net.ssl.SSLHandshakeException: Failed to create SSL connection
at io.vertx.core.net.impl.ChannelProvider$1.userEventTriggered(ChannelProvider.java:129) ~[vertx-core.jar:4.3.1]
at io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:346) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:332) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireUserEventTriggered(AbstractChannelHandlerContext.java:324) ~[netty-transport.jar:4.1.77.Final]
at io.netty.handler.ssl.SslUtils.handleHandshakeFailure(SslUtils.java:443) ~[netty-handler.jar:4.1.77.Final]
at io.netty.handler.ssl.SslHandler.setHandshakeFailure(SslHandler.java:1883) ~[netty-handler.jar:4.1.77.Final]
at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1067) ~[netty-handler.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:241) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:248) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:813) ~[netty-transport.jar:4.1.77.Final]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common.jar:4.1.77.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-transport.jar:4.1.77.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common.jar:4.1.77.Final]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.nio.channels.ClosedChannelException
at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1064) ~[netty-handler.jar:4.1.77.Final]
... 16 more
2 - For some reason the SSL handshake timeout was triggered (we are using the 10 seconds default):
Exception: Failed to create SSL connection
com.bosch.tt.rst.services.chassis.exception.ServiceException: Failed to create SSL connection
at com.bosch.tt.rst.services.gateways.boundaries.castt.CasttImpl.lambda$getCasttTokenForCompany$7(CasttImpl.java:137) ~[gateways.jar:?]
at io.reactivex.rxjava3.internal.operators.single.SingleResumeNext$ResumeMainSingleObserver.onError(SingleResumeNext.java:73) ~[rxjava.jar:?]
at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onError(SingleMap.java:70) ~[rxjava.jar:?]
at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onError(SingleMap.java:70) ~[rxjava.jar:?]
at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onError(SingleMap.java:70) ~[rxjava.jar:?]
at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onError(SingleMap.java:70) ~[rxjava.jar:?]
at io.reactivex.rxjava3.internal.operators.single.SingleDoOnEvent$DoOnEvent.onError(SingleDoOnEvent.java:70) ~[rxjava.jar:?]
at io.vertx.rxjava3.impl.AsyncResultSingle.lambda$subscribeActual$0(AsyncResultSingle.java:67) ~[vertx-rx-java3-gen.jar:4.3.1]
at io.vertx.rxjava3.ext.web.client.HttpRequest$6.handle(HttpRequest.java:593) ~[vertx-rx-java3.jar:4.3.1]
at io.vertx.rxjava3.ext.web.client.HttpRequest$6.handle(HttpRequest.java:588) ~[vertx-rx-java3.jar:4.3.1]
at io.vertx.ext.web.client.impl.HttpContext.handleFailure(HttpContext.java:386) ~[vertx-web-client.jar:4.3.1]
at io.vertx.ext.web.client.impl.HttpContext.execute(HttpContext.java:380) ~[vertx-web-client.jar:4.3.1]
at io.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:355) ~[vertx-web-client.jar:4.3.1]
at io.vertx.ext.web.client.impl.HttpContext.fire(HttpContext.java:322) ~[vertx-web-client.jar:4.3.1]
at io.vertx.ext.web.client.impl.HttpContext.fail(HttpContext.java:303) ~[vertx-web-client.jar:4.3.1]
at io.vertx.ext.web.client.impl.HttpContext.lambda$handleCreateRequest$6(HttpContext.java:486) ~[vertx-web-client.jar:4.3.1]
at io.vertx.core.impl.future.FutureImpl$3.onFailure(FutureImpl.java:153) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureBase.lambda$emitFailure$1(FutureBase.java:69) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:87) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.DuplicatedContext.execute(DuplicatedContext.java:179) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureBase.emitFailure(FutureBase.java:66) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureImpl.tryFail(FutureImpl.java:230) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.PromiseImpl.tryFail(PromiseImpl.java:23) ~[vertx-core.jar:4.3.1]
at io.vertx.core.http.impl.HttpClientImpl.lambda$doRequest$8(HttpClientImpl.java:645) ~[vertx-core.jar:4.3.1]
at io.vertx.core.net.impl.pool.Endpoint.lambda$getConnection$0(Endpoint.java:52) ~[vertx-core.jar:4.3.1]
at io.vertx.core.http.impl.SharedClientHttpStreamEndpoint$Request.handle(SharedClientHttpStreamEndpoint.java:162) ~[vertx-core.jar:4.3.1]
at io.vertx.core.http.impl.SharedClientHttpStreamEndpoint$Request.handle(SharedClientHttpStreamEndpoint.java:123) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:56) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.ContextImpl.emit(ContextImpl.java:274) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:23) ~[vertx-core.jar:4.3.1]
at io.vertx.core.net.impl.pool.SimpleConnectionPool$ConnectFailed$1.run(SimpleConnectionPool.java:382) ~[vertx-core.jar:4.3.1]
at io.vertx.core.net.impl.pool.CombinerExecutor.submit(CombinerExecutor.java:50) ~[vertx-core.jar:4.3.1]
at io.vertx.core.net.impl.pool.SimpleConnectionPool.execute(SimpleConnectionPool.java:245) ~[vertx-core.jar:4.3.1]
at io.vertx.core.net.impl.pool.SimpleConnectionPool.lambda$connect$2(SimpleConnectionPool.java:259) ~[vertx-core.jar:4.3.1]
at io.vertx.core.http.impl.SharedClientHttpStreamEndpoint.lambda$connect$2(SharedClientHttpStreamEndpoint.java:104) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureImpl$3.onFailure(FutureImpl.java:153) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureBase.emitFailure(FutureBase.java:75) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureImpl.tryFail(FutureImpl.java:230) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.Composition$1.onFailure(Composition.java:66) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureBase.emitFailure(FutureBase.java:75) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FailedFuture.addListener(FailedFuture.java:98) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.Composition.onFailure(Composition.java:55) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureBase.emitFailure(FutureBase.java:75) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.FutureImpl.tryFail(FutureImpl.java:230) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.future.PromiseImpl.tryFail(PromiseImpl.java:23) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:56) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.ContextImpl.emit(ContextImpl.java:274) ~[vertx-core.jar:4.3.1]
at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:23) ~[vertx-core.jar:4.3.1]
at io.vertx.core.net.impl.NetClientImpl.failed(NetClientImpl.java:294) ~[vertx-core.jar:4.3.1]
at io.vertx.core.net.impl.NetClientImpl.lambda$connectInternal$4(NetClientImpl.java:262) ~[vertx-core.jar:4.3.1]
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:609) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.DefaultPromise.setFailure(DefaultPromise.java:109) ~[netty-common.jar:4.1.77.Final]
at io.vertx.core.net.impl.ChannelProvider$1.userEventTriggered(ChannelProvider.java:131) ~[vertx-core.jar:4.3.1]
at io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:346) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:332) ~[netty-transport.jar:4.1.77.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireUserEventTriggered(AbstractChannelHandlerContext.java:324) ~[netty-transport.jar:4.1.77.Final]
at io.netty.handler.ssl.SslUtils.handleHandshakeFailure(SslUtils.java:443) ~[netty-handler.jar:4.1.77.Final]
at io.netty.handler.ssl.SslHandler$7.run(SslHandler.java:2117) ~[netty-handler.jar:4.1.77.Final]
at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:170) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common.jar:4.1.77.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) ~[netty-transport.jar:4.1.77.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common.jar:4.1.77.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common.jar:4.1.77.Final]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: javax.net.ssl.SSLHandshakeException: Failed to create SSL connection
at io.vertx.core.net.impl.ChannelProvider$1.userEventTriggered(ChannelProvider.java:129) ~[vertx-core.jar:4.3.1]
... 15 more
Caused by: io.netty.handler.ssl.SslHandshakeTimeoutException: handshake timed out after 10000ms
at io.netty.handler.ssl.SslHandler$7.run(SslHandler.java:2113) ~[netty-handler.jar:4.1.77.Final]
... 10 more
Kind regards,
Rui Silva
Software developer @ Bosch