CDV ❯ Interrupted Exception in JMX in the server could cause the server to stall.
-
Bug
-
Status: Closed
-
1 Critical
-
Resolution: Fixed
-
-
-
hhuynh
-
Reporter: ssubbiah
-
October 02, 2008
-
0
-
Watchers: 0
-
September 17, 2009
-
October 02, 2008
Description
The TPS of the server fell to zero, the server log doesnt give much. But the console logs have this exception.
java.lang.InterruptedException at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1062) at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:307) at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:240) at com.tc.util.concurrent.TCLinkedBlockingQueue.put(TCLinkedBlockingQueue.java:34) at com.tc.async.impl.StageQueueImpl.add(StageQueueImpl.java:90) at com.tc.net.protocol.delivery.StateMachineRunner.scheduleIfNeeded(StateMachineRunner.java:74) at com.tc.net.protocol.delivery.StateMachineRunner.addEvent(StateMachineRunner.java:68) at com.tc.net.protocol.delivery.GuaranteedDeliveryProtocol.send(GuaranteedDeliveryProtocol.java:32) at com.tc.net.protocol.delivery.OnceAndOnlyOnceProtocolNetworkLayerImpl.send(OnceAndOnlyOnceProtocolNetworkLayerImpl.java:97) at com.tc.net.protocol.tcm.AbstractMessageChannel.send(AbstractMessageChannel.java:165) at com.tc.net.protocol.tcm.TCMessageImpl.basicSend(TCMessageImpl.java:325) at com.tc.net.protocol.tcm.TCMessageImpl.send(TCMessageImpl.java:320) at com.tc.management.remote.protocol.terracotta.TunnelingMessageConnection.writeMessage(TunnelingMessageConnection.java:82) at com.sun.jmx.remote.generic.ClientSynchroMessageConnectionImpl.sendWithReturn(ClientSynchroMessageConnectionImpl.java:231) at javax.management.remote.generic.ClientIntermediary.mBeanServerRequest(ClientIntermediary.java:975) at javax.management.remote.generic.ClientIntermediary.mBeanServerRequest(ClientIntermediary.java:957) at javax.management.remote.generic.ClientIntermediary.getAttribute(ClientIntermediary.java:369) at javax.management.remote.generic.GenericConnector$RemoteMBeanServerConnection.getAttribute(GenericConnector.java:490) at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:175) at $Proxy0.getSupportedStatistics(Unknown Source) at com.tc.statistics.agent.StatisticsAgentConnection.getSupportedStatistics(StatisticsAgentConnection.java:70) at com.tc.statistics.beans.impl.StatisticsGatewayMBeanImpl.getSupportedStatistics(StatisticsGatewayMBeanImpl.java:121) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sun.jmx.mbeanserver.StandardMetaDataImpl.getAttribute(StandardMetaDataImpl.java:637) at com.sun.jmx.mbeanserver.StandardMetaDataImpl.getAttribute(StandardMetaDataImpl.java:265) at javax.management.StandardMBean.getAttribute(StandardMBean.java:278) at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.getAttribute(DynamicMetaDataImpl.java:96) at com.sun.jmx.mbeanserver.MetaDataImpl.getAttribute(MetaDataImpl.java:181) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:638) at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:659) at javax.management.remote.generic.ServerIntermediary.handleRequest(ServerIntermediary.java:222) at javax.management.remote.generic.ServerIntermediary$PrivilegedRequestJob.run(ServerIntermediary.java:951) at java.security.AccessController.doPrivileged(Native Method) at javax.management.remote.generic.ServerIntermediary$RequestHandler.handleMBSReqMessage(ServerIntermediary.java:727) at javax.management.remote.generic.ServerIntermediary$RequestHandler.execute(ServerIntermediary.java:629) at com.sun.jmx.remote.generic.ServerSynchroMessageConnectionImpl$RemoteJob.run(ServerSynchroMessageConnectionImpl.java:266) at com.sun.jmx.remote.opt.util.ThreadService$ThreadServiceJob.run(ThreadService.java:208) at com.sun.jmx.remote.opt.util.JobExecutor.run(JobExecutor.java:59)
Comments
Fiona OShea 2008-10-02
Hung Huynh 2008-11-04
test existed
One place where Thread.interrupt() is called is when a remote jmx client disconnects. If there is an outstanding request being processed on behalf of that client when it disconnects, the thread processing the request will be interrupted.