[
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([email protected]/SSLSocketImpl.java:921)
- waiting to lock <0x000000070791c5e8> (a
sun.security.ssl.SSLSocketImpl$AppInputStream)
at
sun.security.ssl.SSLSocketImpl.bruteForceCloseInput([email protected]/SSLSocketImpl.java:615)
at
sun.security.ssl.SSLSocketImpl.duplexCloseOutput([email protected]/SSLSocketImpl.java:566)
at sun.security.ssl.SSLSocketImpl.close([email protected]/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([email protected]/Native
Method)
at
jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:62)
at
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke([email protected]/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([email protected]/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([email protected]/Native Method)
at
java.net.SocketInputStream.socketRead([email protected]/SocketInputStream.java:115)
at java.net.SocketInputStream.read([email protected]/SocketInputStream.java:168)
at java.net.SocketInputStream.read([email protected]/SocketInputStream.java:140)
at
sun.security.ssl.SSLSocketInputRecord.read([email protected]/SSLSocketInputRecord.java:448)
at
sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket([email protected]/SSLSocketInputRecord.java:68)
at
sun.security.ssl.SSLSocketImpl.readApplicationRecord([email protected]/SSLSocketImpl.java:1132)
at
sun.security.ssl.SSLSocketImpl$AppInputStream.read([email protected]/SSLSocketImpl.java:828)
- locked <0x000000070791c5e8> (a sun.security.ssl.SSLSocketImpl$AppInputStream)
at
java.io.BufferedInputStream.fill([email protected]/BufferedInputStream.java:252)
at
java.io.BufferedInputStream.read1([email protected]/BufferedInputStream.java:292)
at
java.io.BufferedInputStream.read([email protected]/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([email protected]/ObjectInputStream.java:2745)
at
java.io.ObjectInputStream$PeekInputStream.readFully([email protected]/ObjectInputStream.java:2761)
at
java.io.ObjectInputStream$BlockDataInputStream.readShort([email protected]/ObjectInputStream.java:3258)
at
java.io.ObjectInputStream.readStreamHeader([email protected]/ObjectInputStream.java:873)
at java.io.ObjectInputStream.<init>([email protected]/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)