Re: [jgroups-dev] Issue with TCPConnectionMap in jgroups 2.12.2.Final

Bela Ban <[email protected]> Thu, 28 Feb 2013 11:48:16 +0100
Newsgroups gmane.comp.java.javagroups.devel
Message-ID <[email protected]>
On 2/28/13 4:27 AM, Sundararajan, Mukund wrote:
>
> Bela,
>
> Is TCP_NIO supported with jgroups 2.12.2.Final?
>


No; TCP_NIO is not supported in any release.

> I have been reading bug reports and have seen people reporting that 
> the Connection_Sender thread disappears when the issue below happens. 
> I don’t know what was the resolution to this issue.
>
> https://issues.jboss.org/browse/JGRP-1003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12475091#action_12475091
>
> Mukund
>
> *From:*Sundararajan, Mukund
> *Sent:* Wednesday, February 27, 2013 5:23 PM
> *To:* [email protected]
> *Cc:* [email protected]
> *Subject:* Issue with TCPConnectionMap in jgroups 2.12.2.Final
>
> Hi Bela,
>
> I am running into an issue that is very similar to what was reported 
> here -à https://issues.jboss.org/browse/JGRP-1157
>
> Basically during application startup, jgroups forms a cluster with 9 
> other nodes. What I am seeing is sometimes all our threads get stuck 
> in 
> org/jgroups/blocks/TCPConnectionMap$TCPConnection$Sender.addToQueue(TCPConnectionMap.java:619). 
> When this condition happens I have no other way out but to restart the 
> application.
>
> I have thread dumps and have analyzed it thoroughly. What I see is 
> there are 9 Sender threads waiting on LinkedBlockingQueue.take(). 
> However the threads that are sending messages out are getting blocked 
> on LinkedBlockingQueue.put() for a Connection for which the Sender 
> thread has most probably terminated and hence there is no code waiting 
> on take(). I say this because the Condition object that the 9 Sender 
> threads are waiting on is different from the Condition object that the 
> writers are blocked on!
>
> *The nine Sender threads are the following - *
>
> "Connection.Sender [25.221.5.230:59891 - 
> 25.221.12.6:9800],Enterprise-,ukwgc7unybcm02-41676(2)" id=14668 
> idx=0x6e8 tid=21005 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f88f638
>
> Connection.Sender [25.221.5.230:9800 - 
> 25.221.13.101:35061],Enterprise-,ukwgc7unybcm02-41676(2)" id=14660 
> idx=0x928 tid=20997 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f7dfd80
>
> "Connection.Sender [25.221.5.230:43781 - 
> 25.221.4.6:9800],Enterprise-,ukwgc7unybcm02-41676(2)" id=14670 
> idx=0x978 tid=21007 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f4cd3b0
>
> "Connection.Sender [25.221.5.230:52571 - 
> 25.221.42.7:9800],Enterprise-,ukwgc7unybcm02-41676(2)" id=14674 
> idx=0x9c8 tid=21011 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f741e40
>
> "Connection.Sender [25.221.5.230:48129 - 
> 25.221.42.6:9800],Enterprise-,ukwgc7unybcm02-41676(2)" id=14672 
> idx=0xa48 tid=21009 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f474138
>
> "Connection.Sender [25.221.5.230:41259 - 
> 25.221.12.166:9800],Enterprise-,ukwgc7unybcm02-41676(2)" id=14664 
> idx=0xa6c tid=21001 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f772cd8
>
> "Connection.Sender [25.221.5.230:9800 - 
> 25.221.2.5:35354],Enterprise-,ukwgc7unybcm02-41676(2)" id=14644 
> idx=0xa98 tid=19682 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x90bb3790
>
> "Connection.Sender [25.221.5.230:59870 - 
> 25.221.13.230:9800],Enterprise-,ukwgc7unybcm02-41676(2)" id=14662 
> idx=0xb24 tid=20999 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f6bca10
>
> "Connection.Sender [25.221.5.230:36122 - 
> 25.221.4.198:9800],Enterprise-,ukwgc7unybcm02-41676(2)" id=14666 
> idx=0xb44 tid=21003 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f5b0618
>
> *All my application threads are stuck in Sender.addToQueue() all 
> waiting on the same Condition object 
> *AbstractQueuedSynchronizer$ConditionObject@0x58590740. If you notice 
> there is no Sender thread above that has a blocking take() call on 
> this condition object.**
>
> [STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default 
> (self-tuning)'" id=20 idx=0x8c tid=26789 prio=1 alive, parked, 
> native_blocked, daemon
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x58590740
>
> [STUCK] ExecuteThread: '1' for queue: 'weblogic.kernel.Default 
> (self-tuning)'" id=23 idx=0x98 tid=26792 prio=1 alive, parked, 
> native_blocked, daemon
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x58590740
>
> "[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default 
> (self-tuning)'" id=30 idx=0xac tid=26802 prio=1 alive, parked, 
> native_blocked, daemon
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x58590740
>
> …..and so on. All my application threads (30 of them) are stuck in the 
> same place.
>
> *Here is the complete stack trace.*
>
> [STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default 
> (self-tuning)'" id=20 idx=0x8c tid=26789 prio=1 alive, parked, 
> native_blocked, daemon
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x58590740
>
> at jrockit/vm/Locks.park0(J)V(Native Method)
>
> at jrockit/vm/Locks.park(Locks.java:2230)[inlined]
>
> at jrockit/proxy/sun/misc/Unsafe.park(Unsafe.java:616)[inlined]
>
> at 
> java/util/concurrent/locks/LockSupport.park(LockSupport.java:156)[inlined]
>
> at 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)[optimized]
>
> at 
> java/util/concurrent/LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)[optimized]
>
> at 
> org/jgroups/blocks/TCPConnectionMap$TCPConnection$Sender.addToQueue(TCPConnectionMap.java:619)[inlined]
>
> at 
> org/jgroups/blocks/TCPConnectionMap$TCPConnection.send(TCPConnectionMap.java:446)[inlined]
>
> at 
> org/jgroups/blocks/TCPConnectionMap$TCPConnection.access$100(TCPConnectionMap.java:354)[inlined]
>
> at 
> org/jgroups/blocks/TCPConnectionMap.send(TCPConnectionMap.java:167)[inlined]
>
> at org/jgroups/protocols/TCP.send(TCP.java:56)[optimized]
>
> at org/jgroups/protocols/BasicTCP.sendUnicast(BasicTCP.java:95)[optimized]
>
> at org/jgroups/protocols/TP.sendToSingleMember(TP.java:1214)[optimized]
>
> at org/jgroups/protocols/TP.doSend(TP.java:1198)[inlined]
>
> at org/jgroups/protocols/TP.send(TP.java:1184)[optimized]
>
> at org/jgroups/protocols/TP.down(TP.java:1041)[optimized]
>
> at org/jgroups/protocols/Discovery.down(Discovery.java:499)[inlined]
>
> at org/jgroups/protocols/TCPPING.down(TCPPING.java:149)[optimized]
>
> at org/jgroups/protocols/MERGE2.down(MERGE2.java:185)
>
> at org/jgroups/protocols/FD_SOCK.down(FD_SOCK.java:340)
>
> at org/jgroups/protocols/FD.down(FD.java:310)[optimized]
>
> at 
> org/jgroups/protocols/VERIFY_SUSPECT.down(VERIFY_SUSPECT.java:72)[optimized]
>
> at org/jgroups/protocols/BARRIER.down(BARRIER.java:93)[optimized]
>
> at org/jgroups/protocols/pbcast/NAKACK.down(NAKACK.java:634)[optimized]
>
> at org/jgroups/protocols/UNICAST.send(UNICAST.java:450)[inlined]
>
> at org/jgroups/protocols/UNICAST.down(UNICAST.java:401)[optimized]
>
> at org/jgroups/protocols/pbcast/STABLE.down(STABLE.java:330)
>
> at org/jgroups/protocols/pbcast/GMS.down(GMS.java:977)
>
> at org/jgroups/protocols/UFC.handleDownMessage(UFC.java:123)
>
> at org/jgroups/protocols/FlowControl.down(FlowControl.java:341)
>
> at 
> org/jgroups/protocols/FlowControl.sendCreditRequest(FlowControl.java:498)
>
> at org/jgroups/protocols/MFC.handleDownMessage(MFC.java:112)
>
> at org/jgroups/protocols/FlowControl.down(FlowControl.java:341)
>
> at org/jgroups/protocols/FRAG2.down(FRAG2.java:155)
>
> at 
> org/jgroups/protocols/pbcast/STATE_TRANSFER.down(STATE_TRANSFER.java:214)
>
> at org/jgroups/stack/ProtocolStack.down(ProtocolStack.java:1081)
>
> at org/jgroups/JChannel.down(JChannel.java:1654)
>
> at org/jgroups/JChannel.send(JChannel.java:734)
>
> at com/ipc/ds/interzone/channel/IZChannel.sendMessage(IZChannel.java:138)
>
> at com/ipc/ds/interzone/channel/IZChannel.sendMessage(IZChannel.java:120)
>
> at 
> com/ipc/ds/interzone/notification/LocalLineStatusNotificationListener.notify(LocalLineStatusNotificationListener.java:207)
>
> at 
> com/ipc/ds/notification/adaptors/JNDIAdaptor.tell(Ljava/lang/String;Ljava/util/List;Lcom/ipc/ds/notification/Publishable;)V(Unknown 
> Source)
>
> at com/ipc/ds/notification/core/NotificationEvent.fire()V(Unknown Source)
>
> at com/ipc/ds/notification/core/NotificationJob.run()V(Unknown Source)
>
> at 
> com/ipc/ds/notification/ejb/LineStatusNotificationMDB.onMessage(Ljavax/jms/Message;)V(Unknown 
> Source)
>
> at 
> sun/reflect/GeneratedMethodAccessor552.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown 
> Source)
>
> at 
> sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[optimized]
>
> at java/lang/reflect/Method.invoke(Method.java:597)[optimized]
>
> at 
> com/bea/core/repackaged/springframework/aop/support/AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)[inlined]
>
> at 
> com/bea/core/repackaged/springframework/aop/framework/ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)[inlined]
>
> at 
> com/bea/core/repackaged/springframework/aop/framework/ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)[optimized]
>
> at 
> com/bea/core/repackaged/springframework/aop/support/DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
>
> at 
> com/bea/core/repackaged/springframework/aop/support/DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
>
> at 
> com/bea/core/repackaged/springframework/aop/framework/ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)[optimized]
>
> at 
> com/bea/core/repackaged/springframework/aop/interceptor/ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
>
> at 
> com/bea/core/repackaged/springframework/aop/framework/ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)[optimized]
>
> at 
> com/bea/core/repackaged/springframework/aop/support/DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
>
> at 
> com/bea/core/repackaged/springframework/aop/support/DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
>
> at 
> com/bea/core/repackaged/springframework/aop/framework/ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)[optimized]
>
> at 
> com/bea/core/repackaged/springframework/aop/framework/JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)[optimized]
>
> at $Proxy195.onMessage(Ljavax/jms/Message;)V(Unknown Source)
>
> at weblogic/ejb/container/internal/MDListener.execute(MDListener.java:466)
>
> at 
> weblogic/ejb/container/internal/MDListener.transactionalOnMessage(MDListener.java:371)
>
> at 
> weblogic/ejb/container/internal/MDListener.onMessage(MDListener.java:327)
>
> at weblogic/jms/client/JMSSession.onMessage(JMSSession.java:4659)
>
> at weblogic/jms/client/JMSSession.execute(JMSSession.java:4345)[optimized]
>
> at weblogic/jms/client/JMSSession.executeMessage(JMSSession.java:3821)
>
> at weblogic/jms/client/JMSSession.access$000(JMSSession.java:115)
>
> at weblogic/jms/client/JMSSession$UseForRunnable.run(JMSSession.java:5170)
>
> at 
> weblogic/work/SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)[optimized]
>
> at weblogic/work/ExecuteThread.execute(ExecuteThread.java:201)[optimized]
>
> at weblogic/work/ExecuteThread.run(ExecuteThread.java:173)
>
> at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)
>
> -- end of trace
>
> Is there a way out? This happens during application startup only under 
> unknown circumstances. I would say 1 out of 10 times it happens.
>
> Our application starts sending out messages as soon as the JChannel 
> gets connected. From netstat what I see is out of the 9 TCP 
> connections, about 7 of them were initiated by this node to other 
> nodes and 2 of them were initiated by other nodes. My bind port is 
> 9800. For some connections I see the connection is from an ephemeral 
> port on the remote side versus 9800. See example below. My server IP 
> us 25.221.5.230. This connection was initiated by the remote side.
>
> Connection.Sender [25.221.5.230:9800 - 
> 25.221.13.101:35061],Enterprise-,ukwgc7unybcm02-41676(2)" id=14660 
> idx=0x928 tid=20997 prio=5 alive, parked, native_blocked
>
> -- Parking to wait for: 
> java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject@0x9f7dfd80
>
> I am trying to find a way out. Would setting use_send_queues to false 
> help? At this point I have to stay with 2.12.2.Final since this code 
> is running in the field but if an upgrade is inevitable I can look 
> into it.
>
> Thanks
>
> Mukund
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> DISCLAIMER: This e-mail may contain information that is confidential, 
> privileged or otherwise protected from disclosure. If you are not an 
> intended recipient of this e-mail, do not duplicate or redistribute it 
> by any means. Please delete it and any attachments and notify the 
> sender that you have received it in error. Unintended recipients are 
> prohibited from taking action on the basis of information in this 
> e-mail.E-mail messages may contain computer viruses or other defects, 
> may not be accurately replicated on other systems, or may be 
> intercepted, deleted or interfered with without the knowledge of the 
> sender or the intended recipient. If you are not comfortable with the 
> risks associated with e-mail messages, you may decide not to use 
> e-mail to communicate with IPC. IPC reserves the right, to the extent 
> and under circumstances permitted by applicable law, to retain, 
> monitor and intercept e-mail messages to and from its systems.
>

-- 
Bela Ban, JGroups lead (http://www.jgroups.org)


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Javagroups-development mailing list