You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Vahram Aharonyan (JIRA)" <ji...@apache.org> on 2017/09/18 08:57:00 UTC
[jira] [Created] (GEODE-3637) configureClientSSLSocket call can
block Acceptor thread
Vahram Aharonyan created GEODE-3637:
---------------------------------------
Summary: configureClientSSLSocket call can block Acceptor thread
Key: GEODE-3637
URL: https://issues.apache.org/jira/browse/GEODE-3637
Project: Geode
Issue Type: Bug
Components: client/server
Reporter: Vahram Aharonyan
Fix For: 1.3.0
org.apache.geode.internal.net.SocketCreator#configureClientSSLSocket timeout for Socket is being configured before starting SSL handshake only if passed "timeout" argument is larger than 0.
Having sslSocket.startHandshake issued without setting timeout can result to the blocking of caller thread as in GEODE-2898, GEODE-3023.
Below is the example of Handshaker thread stack-trace that got stacked:
"Handshaker /10.124.195.100:10000 Thread 183" Id=526300 in RUNNABLE (running in native)
Total blocked: 4 Total waited: 884
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
java.net.SocketInputStream.read(SocketInputStream.java:171)
java.net.SocketInputStream.read(SocketInputStream.java:141)
sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
sun.security.ssl.InputRecord.read(InputRecord.java:503)
sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
org.apache.geode.internal.net.SocketCreator.configureClientSSLSocket(SocketCreator.java:1088)
org.apache.geode.internal.net.SocketCreator.connect(SocketCreator.java:967)
org.apache.geode.internal.net.SocketCreator.connect(SocketCreator.java:929)
org.apache.geode.internal.net.SocketCreator.connectForServer(SocketCreator.java:908)
org.apache.geode.internal.tcp.Connection.<init>(Connection.java:1306)
org.apache.geode.internal.tcp.Connection.createSender(Connection.java:1094)
org.apache.geode.internal.tcp.ConnectionTable.getOrderedAndOwned(ConnectionTable.java:553)
org.apache.geode.internal.tcp.ConnectionTable.get(ConnectionTable.java:664)
org.apache.geode.internal.tcp.TCPConduit.getConnection(TCPConduit.java:1037)
org.apache.geode.distributed.internal.direct.DirectChannel.getConnections(DirectChannel.java:543)
org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:319)
org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:605)
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.directChannelSend(GMSMembershipManager.java:1684)
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.send(GMSMembershipManager.java:1875)
org.apache.geode.distributed.internal.DistributionChannel.send(DistributionChannel.java:82)
org.apache.geode.distributed.internal.DistributionManager.sendOutgoing(DistributionManager.java:3416)
org.apache.geode.distributed.internal.DistributionManager.sendMessage(DistributionManager.java:3453)
org.apache.geode.distributed.internal.DistributionManager.putOutgoing(DistributionManager.java:1832)
org.apache.geode.internal.cache.UpdateAttributesProcessor.sendProfileUpdate(UpdateAttributesProcessor.java:162)
org.apache.geode.internal.cache.UpdateAttributesProcessor.distribute(UpdateAttributesProcessor.java:97)
org.apache.geode.internal.cache.DistributedRegion.initialized(DistributedRegion.java:1128)
org.apache.geode.internal.cache.LocalRegion.initialize(LocalRegion.java:2413)
org.apache.geode.internal.cache.DistributedRegion.initialize(DistributedRegion.java:1117)
org.apache.geode.internal.cache.HARegion.initialize(HARegion.java:345)
org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3308)
org.apache.geode.internal.cache.HARegion.getInstance(HARegion.java:265)
org.apache.geode.internal.cache.ha.HARegionQueue.createHARegion(HARegionQueue.java:348)
org.apache.geode.internal.cache.ha.HARegionQueue.<init>(HARegionQueue.java:328)
org.apache.geode.internal.cache.ha.HARegionQueue$BlockingHARegionQueue.<init>(HARegionQueue.java:2199)
org.apache.geode.internal.cache.ha.HARegionQueue$DurableHARegionQueue.<init>(HARegionQueue.java:2450)
org.apache.geode.internal.cache.ha.HARegionQueue.getHARegionQueueInstance(HARegionQueue.java:2030)
org.apache.geode.internal.cache.tier.sockets.CacheClientProxy$MessageDispatcher.<init>(CacheClientProxy.java:2315)
org.apache.geode.internal.cache.tier.sockets.CacheClientProxy.initializeMessageDispatcher(CacheClientProxy.java:1728)
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.initializeProxy(CacheClientNotifier.java:660)
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerClient(CacheClientNotifier.java:587)
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerGFEClient(CacheClientNotifier.java:379)
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerClient(CacheClientNotifier.java:324)
org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.handleNewClientConnection(AcceptorImpl.java:1510)
org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$5.run(AcceptorImpl.java:1298)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:748)
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)