Menu

#4091 [HHQ-3880] JMXProtocolAJP does not set SO_TIMEOUT, potential

Bug
open
None
5
2012-10-09
2010-04-15
No

http://jira.hyperic.com/browse/HHQ-3880


When monitoring 'Tomcat x.x Connector' services (from the servlet plugin) if the monitored server does not respond the ScheduleThread can become stuck, causing other metrics to not be collected.



This is yet another variation of HHQ-1695



Thread dump from the agent:



INFO | jvm 1 | 2010/04/06 15:34:02 | "ScheduleThread" daemon prio=1 tid=0x00002aaaae3a42d0 nid=0x5249 runnable [0x0000000041668000..0x0000000041668ba0]


INFO | jvm 1 | 2010/04/06 15:34:02 | at java.net.SocketInputStream.socketRead0(Native Method)


INFO | jvm 1 | 2010/04/06 15:34:02 | at java.net.SocketInputStream.read(Unknown Source)


INFO | jvm 1 | 2010/04/06 15:34:02 | at java.net.SocketInputStream.read(Unknown Source)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXProtocolAjp.get(JMXProtocolAjp.java:180)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXProtocolAjp.openStream(JMXProtocolAjp.java:264)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXRemote.getURLAvailability(JMXRemote.java:309)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXRemote.getAvailability(JMXRemote.java:370)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.servlet.client.JMXRemote.getRemoteMBeanValue(JMXRemote.java:388)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.plugin.servlet.ServletMeasurementPlugin.getRemoteValue(ServletMeasurementPlugin.java:167)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.plugin.servlet.ServletMeasurementPlugin.getValue(ServletMeasurementPlugin.java:206)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.MeasurementPluginManager.getPluginValue(MeasurementPluginManager.java:176)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.product.MeasurementPluginManager.getValue(MeasurementPluginManager.java:274)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.getValue(ScheduleThread.java:298)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.collect(ScheduleThread.java:387)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.collect(ScheduleThread.java:344)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.collect(ScheduleThread.java:490)


INFO | jvm 1 | 2010/04/06 15:34:02 | - locked <0x00002b07507f1db8> (a java.util.Collections$SynchronizedMap)


INFO | jvm 1 | 2010/04/06 15:34:02 | at org.hyperic.hq.measurement.agent.server.ScheduleThread.run(ScheduleThread.java:512)


INFO | jvm 1 | 2010/04/06 15:34:02 | at java.lang.Thread.run(Unknown Source)



It would seem to me that setting socket.setSoTimeout() in JMXProtocolAJP.getSocket() would fix this.

Discussion

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.