[
https://issues.apache.org/jira/browse/IGNITE-28992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18106328#comment-18106328
]
Ignite TC Bot commented on IGNITE-28992:
----------------------------------------
{panel:title=Branch: [pull/13501/head] Base: [master] : No blockers
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/13501/head] Base: [master] : New Tests
(1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#00008b}Compute (Grid){color} [[tests
1|https://ci2.ignite.apache.org/viewLog.html?buildId=9296347]]
* {color:#013220}IgniteBinaryObjectsComputeGridTestSuite:
GridTimeoutProcessorSelfTest.testNonBlockingCancel - PASSED{color}
{panel}
[TeamCity *--> Run :: All*
Results|https://ci2.ignite.apache.org/viewLog.html?buildId=9296458&buildTypeId=IgniteTests24Java8_RunAll]
{color:#ffffff}tcbot-analysis-comment chainBuildId=9296458
rerunBuildIds=9297247,9297249,9297251{color}
> Fix SSL handshake timeout deadlock in the client connector
> ----------------------------------------------------------
>
> Key: IGNITE-28992
> URL: https://issues.apache.org/jira/browse/IGNITE-28992
> Project: Ignite
> Issue Type: Bug
> Reporter: Nikita Amelchev
> Assignee: Nikita Amelchev
> Priority: Major
> Labels: ise
> Fix For: 2.19
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> A lock inversion can occur when an SSL client handshake races with its
> timeout. The timeout worker holds the {{CancelableTask}} monitor and waits
> for the SSL lock while closing the session, whereas the NIO worker holds the
> SSL lock and waits for the task monitor in {{{}CancelableTask.close(){}}}.
> This deadlocks both threads and may prevent node shutdown.
>
> {code:java}
> Found one Java-level deadlock: =============================
> "grid-timeout-worker-#118": waiting for ownable synchronizer
> 0x00001006e2545cb0, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
> which is held by "grid-nio-worker-client-listener-17-#168"
> "grid-nio-worker-client-listener-17-#168": waiting to lock monitor
> 0x00007f81cc0468f0 (object 0x00001007bfed44e0, a
> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$CancelableTask),
> which is held by "grid-timeout-worker-#118" Java stack information for the
> threads listed above: ===================================================
> "grid-timeout-worker-#118":
> at jdk.internal.misc.Unsafe.park([email protected]/Native Method) - parking
> to wait for <0x00001006e2545cb0> (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> at
> java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:211)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire([email protected]/AbstractQueuedSynchronizer.java:715)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire([email protected]/AbstractQueuedSynchronizer.java:938)
> at
> java.util.concurrent.locks.ReentrantLock$Sync.lock([email protected]/ReentrantLock.java:153)
> at
> java.util.concurrent.locks.ReentrantLock.lock([email protected]/ReentrantLock.java:322)
> at
> org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter.onSessionClose(GridNioSslFilter.java:432)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClose(GridNioFilterAdapter.java:128)
> at
> org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClose(GridNioCodecFilter.java:137)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClose(GridNioFilterAdapter.java:128)
> at
> org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter.onSessionClose(GridNioAsyncNotifyFilter.java:124)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClose(GridNioFilterAdapter.java:128)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClose(GridNioFilterChain.java:274)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClose(GridNioFilterChain.java:203)
> at
> org.apache.ignite.internal.util.nio.GridNioSessionImpl.close(GridNioSessionImpl.java:169)
> at
> org.apache.ignite.internal.util.nio.GridSelectorNioSessionImpl.close(GridSelectorNioSessionImpl.java:498)
> at
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener$1.run(ClientListenerNioListener.java:324)
> at
> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$CancelableTask.onTimeout(GridTimeoutProcessor.java:371)
> - locked <0x00001007bfed44e0> (a
> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$CancelableTask)
> at
> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$TimeoutWorker.body(GridTimeoutProcessor.java:240)
> at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
> at java.lang.Thread.run([email protected]/Thread.java:840)
> "grid-nio-worker-client-listener-17-#168":
> at
> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$CancelableTask.close(GridTimeoutProcessor.java:388)
> - waiting to lock <0x00001007bfed44e0> (a
> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$CancelableTask)
> at
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.cancelHandshakeTimeout(ClientListenerNioListener.java:345)
> at
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onHandshake(ClientListenerNioListener.java:407)
> at
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:186)
> at
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:60)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
> at
> org.apache.ignite.internal.processors.odbc.ClientListenerProcessor$1.onMessageReceived(ClientListenerProcessor.java:460)
> at
> org.apache.ignite.internal.processors.odbc.ClientListenerProcessor$1.onMessageReceived(ClientListenerProcessor.java:448)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
> at
> org.apache.ignite.internal.util.nio.GridNioCodecFilter.onMessageReceived(GridNioCodecFilter.java:116)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
> at
> org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter.processApplicationBuffer(GridNioSslFilter.java:423)
> at
> org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter.onMessageReceived(GridNioSslFilter.java:401)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
> at
> org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onMessageReceived(GridNioServer.java:3749)
> at
> org.apache.ignite.internal.util.nio.GridNioFilterChain.onMessageReceived(GridNioFilterChain.java:175)
> at
> org.apache.ignite.internal.util.nio.GridNioServer$DirectNioClientWorker.processRead(GridNioServer.java:1379)
> at
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2518)
> at
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2273)
> at
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1904)
> at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
> at java.lang.Thread.run([email protected]/Thread.java:840) Found 1 deadlock.
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)