|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
ClientNotifForwarder wait infinitlyHi everyone,
Has anybody ever seen ClientNotifForwarder wait infinitly? I have a case where a thread wait infinitly while holding a lock on an object and that makes other thread blocked and eventually creating a thread leak on my system.
Name: Thread-142568 State: WAITING on javax.management.remote.rmi.RMIConnector$RMINotifClient@14ba7fe Total blocked: 0 Total waited: 1 Stack trace: java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:474) com.sun.jmx.remote.internal.ClientNotifForwarder.beforeRemove(ClientNotifForwarder.java:745) com.sun.jmx.remote.internal.ClientNotifForwarder.removeNotificationListener(ClientNotifForwarder.java:167) javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.removeNotificationListener(RMIConnector.java:1204) com.miranda.commons.management.JmxContext.removeNotificationListener(JmxContext.java:177) com.miranda.commons.management.JmxConnectionManager.removeNotificationListener(JmxConnectionManager.java:177) com.miranda.adapters.agent.router.RouterClientJMX$2.run(RouterClientJMX.java:222)
I have two other suspicious threads: Name: ClientNotifForwarder-297 State: WAITING on [I@1180ab3 Total blocked: 67 Total waited: 1 Stack trace: java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:474) com.sun.jmx.remote.internal.ClientCommunicatorAdmin.restart(ClientCommunicatorAdmin.java:82) com.sun.jmx.remote.internal.ClientCommunicatorAdmin.gotIOException(ClientCommunicatorAdmin.java:34) javax.management.remote.rmi.RMIConnector$RMIClientCommunicatorAdmin.gotIOException(RMIConnector.java:1413) javax.management.remote.rmi.RMIConnector$RMINotifClient.fetchNotifs(RMIConnector.java:1293) com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.fetchNotifs(ClientNotifForwarder.java:508) com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.run(ClientNotifForwarder.java:399) com.sun.jmx.remote.internal.ClientNotifForwarder$LinearExecutor$1.run(ClientNotifForwarder.java:83)
Looking at the code, I see that ClientNotifForwarder.postReconnection should do beingReconnected = false; notifyAll(); but it is stalled waiting: Name: Thread-34 State: WAITING on javax.management.remote.rmi.RMIConnector$RMINotifClient@14ba7fe Total blocked: 130 Total waited: 2 Stack trace: java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:474) com.sun.jmx.remote.internal.ClientNotifForwarder.postReconnection(ClientNotifForwarder.java:314) javax.management.remote.rmi.RMIConnector$RMIClientCommunicatorAdmin.reconnectNotificationListeners(RMIConnector.java:1512) javax.management.remote.rmi.RMIConnector$RMIClientCommunicatorAdmin.doStart(RMIConnector.java:1577) com.sun.jmx.remote.internal.ClientCommunicatorAdmin.restart(ClientCommunicatorAdmin.java:106) com.sun.jmx.remote.internal.ClientCommunicatorAdmin.access$500(ClientCommunicatorAdmin.java:16) com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker.run(ClientCommunicatorAdmin.java:178) java.lang.Thread.run(Thread.java:595)
My guess is that the state was changed to TERMINATED but the method setState does not call notifyAll when the state is changed to TERMINATED. I tried to unplug and plug the network cable to force a state change but it does not seem to change anything…
Should I report a bug? I made a search on the database and found bug http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6199899 but it was closed and the situation described is “impossible”.
Anyone has an idea?
Thank you very much!
Manuel Darveau
P.S.: I have a report of the state and stack trace for every threads in my application so if you would like to take a look at it, I can send it in private. P.P.S.: Anyone know if it is possible to make contrib to jconsole? |
| Free embeddable forum powered by Nabble | Forum Help |