You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by rw...@apache.org on 2009/09/25 08:39:20 UTC
svn commit: r818739 -
/geronimo/server/trunk/plugins/monitoring/agent-jmx/src/main/java/org/apache/geronimo/monitoring/jmx/snapshot/SnapshotThread.java
Author: rwonly
Date: Fri Sep 25 06:39:20 2009
New Revision: 818739
URL: http://svn.apache.org/viewvc?rev=818739&view=rev
Log:
GERONIMO-4822 Monitoring server via JMX cannot be restarted. (Patch from Siqi Du)
Modified:
geronimo/server/trunk/plugins/monitoring/agent-jmx/src/main/java/org/apache/geronimo/monitoring/jmx/snapshot/SnapshotThread.java
Modified: geronimo/server/trunk/plugins/monitoring/agent-jmx/src/main/java/org/apache/geronimo/monitoring/jmx/snapshot/SnapshotThread.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/monitoring/agent-jmx/src/main/java/org/apache/geronimo/monitoring/jmx/snapshot/SnapshotThread.java?rev=818739&r1=818738&r2=818739&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/monitoring/agent-jmx/src/main/java/org/apache/geronimo/monitoring/jmx/snapshot/SnapshotThread.java (original)
+++ geronimo/server/trunk/plugins/monitoring/agent-jmx/src/main/java/org/apache/geronimo/monitoring/jmx/snapshot/SnapshotThread.java Fri Sep 25 06:39:20 2009
@@ -31,7 +31,7 @@
*/
public class SnapshotThread extends Thread {
- private long SNAPSHOT_DURATION;
+ volatile private long SNAPSHOT_DURATION;
private MBeanServer mbServer = null;
int threadStatus = 1;
// list of mbean names that we will be taking snapshots of
@@ -83,9 +83,9 @@
* @param snapshotDuration
*/
public void setSnapshotDuration(long snapshot_length) {
- SNAPSHOT_DURATION = snapshot_length;
if (snapshot_length == Long.MAX_VALUE)
threadStatus = -1;
+ SNAPSHOT_DURATION = snapshot_length;
}
public void run() {
@@ -96,13 +96,19 @@
mbeanNames = getDefaultMBeanList();
}
// pause the thread from running every SNAPSHOT_DURATION seconds
- while (true && SNAPSHOT_DURATION != Long.MAX_VALUE) {
+ loop: while (true) {
try {
// store the data
SnapshotProcessor.takeSnapshot();
// wait for next snapshot
- Thread.sleep(SNAPSHOT_DURATION);
- } catch (Exception e) {
+ for(long nSleep = SNAPSHOT_DURATION/1000; nSleep>0; nSleep--)
+ {
+ Thread.sleep(1000);
+ if(SNAPSHOT_DURATION == Long.MAX_VALUE)
+ break loop;
+ }
+
+ } catch (InterruptedException e) {
e.printStackTrace();
}
}