[ https://issues.apache.org/jira/browse/IGNITE-11298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16848825#comment-16848825 ]
Vitaliy Biryukov commented on IGNITE-11298: ------------------------------------------- [~ilyak] I've checked on my Ubuntu pc. It seems like we are dealing with a [known bug|https://bugs.openjdk.java.net/browse/JDK-8219658] related to Half-Close Policy. It's affects only TcpDiscoverySpi (checked only on ubuntu). This bag cause deadlock between SslSocket.close and inputStream.read. And it locks so hard so I have to restart my PC to return my network back to normal. Thread dump: {noformat} "test-runner-#1%tcp.TcpCommunicationSpiFaultyClientTest%" #15 prio=5 os_prio=0 cpu=2139,72ms elapsed=75,55s tid=0x00007f8ac0815800 nid=0x6422 waiting for monitor entry [0x00007f8a8cee4000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.ssl.SSLSocketImpl$AppInputStream.deplete(java.base@12.0.1/SSLSocketImpl.java:921) - waiting to lock <0x000000070791c5e8> (a sun.security.ssl.SSLSocketImpl$AppInputStream) at sun.security.ssl.SSLSocketImpl.bruteForceCloseInput(java.base@12.0.1/SSLSocketImpl.java:615) at sun.security.ssl.SSLSocketImpl.duplexCloseOutput(java.base@12.0.1/SSLSocketImpl.java:566) at sun.security.ssl.SSLSocketImpl.close(java.base@12.0.1/SSLSocketImpl.java:479) at org.apache.ignite.internal.util.IgniteUtils.closeQuiet(IgniteUtils.java:4135) at org.apache.ignite.spi.discovery.tcp.ServerImpl$SocketReader.interrupt(ServerImpl.java:7084) at org.apache.ignite.internal.util.IgniteUtils.interrupt(IgniteUtils.java:4724) at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStop0(ServerImpl.java:510) at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStop(ServerImpl.java:442) at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStop(TcpDiscoverySpi.java:2217) at org.apache.ignite.internal.managers.GridManagerAdapter.stopSpi(GridManagerAdapter.java:330) at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.stop(GridDiscoveryManager.java:1743) at org.apache.ignite.internal.IgniteKernal.stop0(IgniteKernal.java:2413) at org.apache.ignite.internal.IgniteKernal.stop(IgniteKernal.java:2285) at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.stop0(IgnitionEx.java:2574) - locked <0x0000000707b608a8> (a org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance) at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.stop(IgnitionEx.java:2537) at org.apache.ignite.internal.IgnitionEx.stop(IgnitionEx.java:330) at org.apache.ignite.Ignition.stop(Ignition.java:223) at org.apache.ignite.testframework.junits.GridAbstractTest.stopGrid(GridAbstractTest.java:1253) at org.apache.ignite.testframework.junits.GridAbstractTest.stopAllGrids(GridAbstractTest.java:1296) at org.apache.ignite.testframework.junits.GridAbstractTest.stopAllGrids(GridAbstractTest.java:1274) at org.apache.ignite.spi.communication.tcp.TcpCommunicationSpiFaultyClientTest.testFailClient(TcpCommunicationSpiFaultyClientTest.java:284) at org.apache.ignite.spi.communication.tcp.TcpCommunicationSpiFaultyClientTest.testNoServerOnHost(TcpCommunicationSpiFaultyClientTest.java:154) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@12.0.1/Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@12.0.1/NativeMethodAccessorImpl.java:62) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@12.0.1/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(java.base@12.0.1/Method.java:567) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.apache.ignite.testframework.junits.GridAbstractTest$6.run(GridAbstractTest.java:2145) at java.lang.Thread.run(java.base@12.0.1/Thread.java:835) "tcp-disco-sock-reader-[31894d88 127.0.0.1:56645]-#12%tcp.TcpCommunicationSpiFaultyClientTest1%" #114 prio=10 os_prio=0 cpu=123,49ms elapsed=72,51s tid=0x00007f8a84138800 nid=0x6494 runnable [0x00007f89939de000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(java.base@12.0.1/Native Method) at java.net.SocketInputStream.socketRead(java.base@12.0.1/SocketInputStream.java:115) at java.net.SocketInputStream.read(java.base@12.0.1/SocketInputStream.java:168) at java.net.SocketInputStream.read(java.base@12.0.1/SocketInputStream.java:140) at sun.security.ssl.SSLSocketInputRecord.read(java.base@12.0.1/SSLSocketInputRecord.java:448) at sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(java.base@12.0.1/SSLSocketInputRecord.java:68) at sun.security.ssl.SSLSocketImpl.readApplicationRecord(java.base@12.0.1/SSLSocketImpl.java:1132) at sun.security.ssl.SSLSocketImpl$AppInputStream.read(java.base@12.0.1/SSLSocketImpl.java:828) - locked <0x000000070791c5e8> (a sun.security.ssl.SSLSocketImpl$AppInputStream) at java.io.BufferedInputStream.fill(java.base@12.0.1/BufferedInputStream.java:252) at java.io.BufferedInputStream.read1(java.base@12.0.1/BufferedInputStream.java:292) at java.io.BufferedInputStream.read(java.base@12.0.1/BufferedInputStream.java:351) - locked <0x000000070791c608> (a java.io.BufferedInputStream) at org.apache.ignite.marshaller.jdk.JdkMarshallerInputStreamWrapper.read(JdkMarshallerInputStreamWrapper.java:53) at java.io.ObjectInputStream$PeekInputStream.read(java.base@12.0.1/ObjectInputStream.java:2745) at java.io.ObjectInputStream$PeekInputStream.readFully(java.base@12.0.1/ObjectInputStream.java:2761) at java.io.ObjectInputStream$BlockDataInputStream.readShort(java.base@12.0.1/ObjectInputStream.java:3258) at java.io.ObjectInputStream.readStreamHeader(java.base@12.0.1/ObjectInputStream.java:873) at java.io.ObjectInputStream.<init>(java.base@12.0.1/ObjectInputStream.java:350) at org.apache.ignite.marshaller.jdk.JdkMarshallerObjectInputStream.<init>(JdkMarshallerObjectInputStream.java:43) at org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal0(JdkMarshaller.java:139) at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:93) at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9957) at org.apache.ignite.spi.discovery.tcp.ServerImpl$SocketReader.body(ServerImpl.java:6526) at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:61) {noformat} As a workaround we can insead of calling Socket.close: Call Socket.shotdownOutput - > Socket.shotdownInput - > Socket.close So since java 12 is not LTS sould we deal with that bug? And if so, should it be fixed in this task? > TcpCommunicationSpi does not support TLSv1.3 > -------------------------------------------- > > Key: IGNITE-11298 > URL: https://issues.apache.org/jira/browse/IGNITE-11298 > Project: Ignite > Issue Type: Bug > Components: general > Affects Versions: 2.7 > Reporter: Ilya Kasnacheev > Assignee: Vitaliy Biryukov > Priority: Major > Labels: Java11 > Time Spent: 10m > Remaining Estimate: 0h > > When started on Java 11 we cannot form a secure cluster - Discovery will > happily use the default TLSv1.3 but Communication will fail with its custom > SSLEngine-using code. > Need to fix that. > Until that, nodes may be salvaged by setProtocol("TLSv1.2") on > SslContextFactory, or by system property -Djdk.tls.client.protocols="TLSv1.2" -- This message was sent by Atlassian JIRA (v7.6.3#76005)