-
Bug
-
Resolution: Fixed
-
P3
-
1.0
-
None
-
1.0
-
generic
-
generic
-
Verified
The JMXMP connector takes a one second timeout hit if a connection is opened and then immediately closed again. The problem is the Thread.join(1000) in SynchroMessageConnectionImpl.MessageReader.terminate, which is deadlocked against GenericConnector.RequestHandler.connectionException.
"Job_Executor8" daemon prio=5 tid=0x001c3180 nid=0x12ac waiting for monitor entry [f1281000..f12819a0]
at javax.management.remote.generic.GenericConnector$RequestHandler.connectionException(GenericConnector.java:658)
- waiting to lock <0xf14a8d28> (a [I)
at com.sun.jmx.remote.generic.SynchroMessageConnectionImpl$MessageReader.run(SynchroMessageConnectionImpl.java:348)
at com.sun.jmx.remote.util.ThreadService$ThreadServiceJob.run(ThreadService.java:199)
at com.sun.jmx.remote.util.JobExecutor.run(JobExecutor.java:60)
"main" prio=5 tid=0x0002d2c8 nid=0x1 in Object.wait() [ffbed000..ffbeda24]
at java.lang.Object.wait(Native Method)
at java.lang.Thread.join(Thread.java:1009)
- locked <0xf1b88968> (a com.sun.jmx.remote.util.JobExecutor)
at com.sun.jmx.remote.generic.SynchroMessageConnectionImpl$MessageReader.terminate(SynchroMessageConnectionImpl.java:414)
at com.sun.jmx.remote.generic.SynchroMessageConnectionImpl.close(SynchroMessageConnectionImpl.java:271)
- locked <0xf14a9050> (a [I)
at javax.management.remote.generic.GenericConnector.close(GenericConnector.java:276)
- locked <0xf14a8d28> (a [I)
at javax.management.remote.generic.GenericConnector.close(GenericConnector.java:225)
at SocketCloseTest.main(SocketCloseTest.java:29)
See the attached test program. Hit it with a CTRL-\ during the second that elapses between the printing of a [ and the printing of the corresponding ].
"Job_Executor8" daemon prio=5 tid=0x001c3180 nid=0x12ac waiting for monitor entry [f1281000..f12819a0]
at javax.management.remote.generic.GenericConnector$RequestHandler.connectionException(GenericConnector.java:658)
- waiting to lock <0xf14a8d28> (a [I)
at com.sun.jmx.remote.generic.SynchroMessageConnectionImpl$MessageReader.run(SynchroMessageConnectionImpl.java:348)
at com.sun.jmx.remote.util.ThreadService$ThreadServiceJob.run(ThreadService.java:199)
at com.sun.jmx.remote.util.JobExecutor.run(JobExecutor.java:60)
"main" prio=5 tid=0x0002d2c8 nid=0x1 in Object.wait() [ffbed000..ffbeda24]
at java.lang.Object.wait(Native Method)
at java.lang.Thread.join(Thread.java:1009)
- locked <0xf1b88968> (a com.sun.jmx.remote.util.JobExecutor)
at com.sun.jmx.remote.generic.SynchroMessageConnectionImpl$MessageReader.terminate(SynchroMessageConnectionImpl.java:414)
at com.sun.jmx.remote.generic.SynchroMessageConnectionImpl.close(SynchroMessageConnectionImpl.java:271)
- locked <0xf14a9050> (a [I)
at javax.management.remote.generic.GenericConnector.close(GenericConnector.java:276)
- locked <0xf14a8d28> (a [I)
at javax.management.remote.generic.GenericConnector.close(GenericConnector.java:225)
at SocketCloseTest.main(SocketCloseTest.java:29)
See the attached test program. Hit it with a CTRL-\ during the second that elapses between the printing of a [ and the printing of the corresponding ].