You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Voronkin (JIRA)" <ji...@apache.org> on 2019/01/22 07:36:00 UTC

[jira] [Commented] (IGNITE-11016) RecoveryLastReceivedMessage(NEED_WAIT) fails with "Failed to encrypt data (SSL engine error)".

    [ https://issues.apache.org/jira/browse/IGNITE-11016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16748456#comment-16748456 ] 

Pavel Voronkin commented on IGNITE-11016:
-----------------------------------------

Reproducer attached.

> RecoveryLastReceivedMessage(NEED_WAIT) fails with "Failed to encrypt data (SSL engine error)".
> ----------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-11016
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11016
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Pavel Voronkin
>            Priority: Major
>         Attachments: IgniteClientConnectSslTest.java
>
>
> Problem: 
> In case of initiator node haven't joined topology yet (doesn't exist in DiscoCache, but exists in TcpDsicovery ring)
> we are writing back new RecoveryLastReceivedMessage(NEED_WAIT)) in the below else clause:
> if (unknownNode)
> { U.warn(log, "Close incoming connection, unknown node [nodeId=" + sndId + ", ses=" + ses + ']'); ses.close(); }
> else {
>  ses.send(new RecoveryLastReceivedMessage(NEED_WAIT)).listen(new CI1<IgniteInternalFuture<?>>() {
>  @Override public void apply(IgniteInternalFuture<?> fut)
> { ses.close(); }
> });
>  }
> In case of SSL such code do encrypt and send concurrently with session.close() which results in exception:
>  javax.net.ssl.SSLException: Failed to encrypt data (SSL engine error) [status=CLOSED, handshakeStatus=NEED_UNWRAP, ses=GridSelectorNioSessionImpl [worker=GridWorker [name=grid-nio-worker-tcp-comm-10, igniteInstanceName=DPL_GRID%DplGridNodeName, finished=false, hashCode=1324367867, interrupted=false, runner=grid-nio-worker-tcp-comm-10-#130%DPL_GRID%DplGridNodeName%|#130%DPL_GRID%DplGridNodeName%]AbstractNioClientWorker [idx=10, bytesRcvd=121406754, bytesSent=0, bytesRcvd0=16659, bytesSent0=0, select=true, super=]DirectNioClientWorker [super=], writeBuf=java.nio.DirectByteBuffer[pos=0 lim=10 cap=32768], readBuf=java.nio.DirectByteBuffer[pos=0 lim=32768 cap=32768], inRecovery=null, outRecovery=null, super=GridNioSessionImpl [locAddr=/10.116.69.208:47100, rmtAddr=/10.53.15.23:55380, createTime=1544502852482, closeTime=0, bytesSent=4076, bytesRcvd=4346, bytesSent0=4076, bytesRcvd0=4346, sndSchedTime=1544502852522, lastSndTime=1544502852522, lastRcvTime=1544502852522, readsPaused=false, filterChain=FilterChain[filters=[, GridConnectionBytesVerifyFilter, SSL filter], accepted=true, markedForClose=true]]]
>                  at org.apache.ignite.internal.util.nio.ssl.GridNioSslHandler.encrypt(GridNioSslHandler.java:380)
>                  at org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter.encrypt(GridNioSslFilter.java:270)
>                  at org.apache.ignite.internal.util.nio.GridNioServer$DirectNioClientWorker.processWriteSsl(GridNioServer.java:1465)
>                  at org.apache.ignite.internal.util.nio.GridNioServer$DirectNioClientWorker.processWrite(GridNioServer.java:1326)
>                  at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2374)
>                  at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2138)
>                  at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1792)
>                  at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>                  at java.lang.Thread.run(Thread.java:745)
>   
> So initiator receive closed exception instead of NEED_WAIT message which leads to exception scenario.
> As result instead of NEED_WAIT loop we retry with exception N times and fail.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)