Menu

#11 NonBlockingConnection SSLon=true hungs xConnector thread

open
nobody
core (9)
5
2011-12-05
2011-12-05
No

Strange behavior when using SSL Context and NonBlockingConnection. As was described in another
bug artifact use of constructor public NonBlockingConnection(String hostname, int port, SSLContext sslContext, boolean sslOn) throws IOException
blocks current thread until connection will be established. And then sometimes something wrongs happens
in xConnect thread when our server is trying to get ssl connection to facebook service. This leads to infinite wait in xConnect for
initGuard lock in IoSSLHandler. Application thread that tries to initialize NonBlockingConnection stall too. Is there any timeouts to be
configured here or something like this? (to be able to check ssl handshake errors or something like that)

Reasons for this issue are not clear. Not often happens. Versions:
- xLightweb - 2.13.2
- xSocket embeded - 2.8.13

Following thread dump was acquired for that symptoms:

"xConnector#default" - Thread t@96
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Native Method)
- waiting on <702923f3> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at org.xsocket.connection.IoSSLHandler.startSSL(IoSSLHandler.java:177)
at org.xsocket.connection.IoSSLHandler.init(IoSSLHandler.java:95)
at org.xsocket.connection.NonBlockingConnection.init(NonBlockingConnection.java:1049)
at org.xsocket.connection.NonBlockingConnection.register(NonBlockingConnection.java:923)
at org.xsocket.connection.NonBlockingConnection.access$200(NonBlockingConnection.java:72)
at org.xsocket.connection.NonBlockingConnection$SyncIoConnectorCallback.onConnectionEstablished(NonBlockingConnection.java:798)
at org.xsocket.connection.IoConnector.handleConnect(IoConnector.java:205)
at org.xsocket.connection.IoConnector.run(IoConnector.java:118)
at java.lang.Thread.run(Thread.java:662)

Locked ownable synchronizers:
- None

"Service-game.data.manager.http.HttpService6-thread-2" - Thread t@78
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
- waiting on <1cf7600c> (a org.xsocket.connection.NonBlockingConnection$SyncIoConnectorCallback)
at org.xsocket.connection.NonBlockingConnection$SyncIoConnectorCallback.connect(NonBlockingConnection.java:770)
at org.xsocket.connection.NonBlockingConnection.<init>(NonBlockingConnection.java:733)
at org.xsocket.connection.NonBlockingConnection.<init>(NonBlockingConnection.java:708)
at org.xsocket.connection.NonBlockingConnection.<init>(NonBlockingConnection.java:540)
at game.handler.tasks.v2.hero.login.auth.facebook.GetAccessToken.process(GetAccessToken.java:87) // <--- BLOCKING CALL new NonBlockingConnection
at game.data.manager.http.HttpTask.runStart(HttpTask.java:47)
at game.data.manager.http.HttpTask.run(HttpTask.java:35)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Locked ownable synchronizers:
- locked <68e3c757> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

Discussion


Log in to post a comment.

MongoDB Logo MongoDB