You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ak...@apache.org on 2007/10/10 04:50:13 UTC

svn commit: r583346 - in /geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor: MasterRemoteControl.java SMP.java snapshot/SnapshotThread.java

Author: akulshreshtha
Date: Tue Oct  9 19:50:12 2007
New Revision: 583346

URL: http://svn.apache.org/viewvc?rev=583346&view=rev
Log:
GERONIMO-3524 Monitoring Server Patch by Viet H. Nguyen

Modified:
    geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/MasterRemoteControl.java
    geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/SMP.java
    geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/snapshot/SnapshotThread.java

Modified: geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/MasterRemoteControl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/MasterRemoteControl.java?rev=583346&r1=583345&r2=583346&view=diff
==============================================================================
--- geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/MasterRemoteControl.java (original)
+++ geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/MasterRemoteControl.java Tue Oct  9 19:50:12 2007
@@ -171,31 +171,36 @@
      * 
      * @param interval
      */
-    public void startSnapshot(Long interval) /*throws Exception*/ {
+    public boolean startSnapshot(Long interval) {
         if((snapshotThread == null || (snapshotThread != null && !snapshotThread.isAlive())) &&
                 interval.longValue() > 0) {
             saveDuration(interval.longValue());
             snapshotThread = new SnapshotThread(interval.longValue(), mbServer);
             snapshotThread.start();
+            return true;
         } else {
-            //throw new Exception("There is already a snapshot thread running.");
+            System.out.println("There is already a snapshot thread running; Duration: " + interval.longValue());
+            return false;
         }
     }
     
     /**
      * Stops the snapshot thread
      */
-    public void stopSnapshot() {
+    public boolean stopSnapshot() {
         if(snapshotThread != null) {
             if(snapshotThread.getSnapshotDuration() == Long.MAX_VALUE) {
                 saveDuration(DEFAULT_DURATION);
             } else {
                 saveDuration(snapshotThread.getSnapshotDuration());
             }
-            snapshotThread.setSnapshotDuration(Long.MAX_VALUE);
+            snapshotThread.setEnd();
+            snapshotThread.interrupt();
+            return true;
         } else {
             System.out.println("There is not a snapshot thread running. Stopping aborted.");
             //log.error("There is not a snapshot thread running. Stopping aborted.");
+            return false;
         }
     }
     
@@ -370,8 +375,8 @@
         GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("MasterRemoteControl", MasterRemoteControl.class);
         infoFactory.addOperation("getStats", new Class[] {String.class}, "HashMap");
         infoFactory.addOperation("setAttribute", new Class[] {String.class, String.class, Object.class}, "void");
-        infoFactory.addOperation("startSnapshot", new Class[] {Long.class}, "void");
-        infoFactory.addOperation("stopSnapshot", new Class[] {}, "void");
+        infoFactory.addOperation("startSnapshot", new Class[] {Long.class}, "boolean");
+        infoFactory.addOperation("stopSnapshot", new Class[] {}, "boolean");
         infoFactory.addOperation("fetchSnapshotData", new Class[] {Integer.class, Integer.class}, "ArrayList");
         infoFactory.addOperation("fetchMaxSnapshotData", new Class[] {Integer.class}, "HashMap");
         infoFactory.addOperation("fetchMinSnapshotData", new Class[] {Integer.class}, "HashMap");

Modified: geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/SMP.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/SMP.java?rev=583346&r1=583345&r2=583346&view=diff
==============================================================================
--- geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/SMP.java (original)
+++ geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/SMP.java Tue Oct  9 19:50:12 2007
@@ -67,8 +67,11 @@
                 System.out.println(e.getMessage());
             }
             */
-//            testSnapshotThread(mbServerConn, 5000);
-//            testSnapshotThreadStop(mbServerConn);
+            testSnapshotThreadStop(mbServerConn);
+            System.out.println("Stopped");
+            Thread.sleep(1000);
+            testSnapshotThread(mbServerConn, 5000);
+            System.out.println("Started");
 //            testFetchingSnapshot(mbServerConn, new Integer(10), new Integer(3));
 //            testFetchingMaxSnapshot(mbServerConn, new Integer(1000));
 //            testFetchingMinSnapshot(mbServerConn, new Integer(1000));
@@ -79,8 +82,8 @@
 //            testAddMBeanToSnapshot(mbServerConn);
 //            testGetMBeans(mbServerConn);
 //            testSetSnapshotDuration(mbServerConn, new Long(60000));
-            testRemoveMBeanToSnapshot(mbServerConn);
-            testGetStatsAttr(mbServerConn);
+//            testRemoveMBeanToSnapshot(mbServerConn);
+//            testGetStatsAttr(mbServerConn);
             
         } catch (Exception e) {
             e.printStackTrace();

Modified: geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/snapshot/SnapshotThread.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/snapshot/SnapshotThread.java?rev=583346&r1=583345&r2=583346&view=diff
==============================================================================
--- geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/snapshot/SnapshotThread.java (original)
+++ geronimo/sandbox/monitoring/mrc-server/mrc-ejb/src/main/java/org/apache/geronimo/monitor/snapshot/SnapshotThread.java Tue Oct  9 19:50:12 2007
@@ -42,6 +42,8 @@
     // list of mbean names that we will be taking snapshots of
     private ArrayList<String> mbeanNames;
     
+    private boolean end = false;
+    
     public SnapshotThread(long snapshot_length, MBeanServer mbServer) {
         SNAPSHOT_DURATION = snapshot_length;
         this.mbServer = mbServer;
@@ -51,6 +53,14 @@
     }
     
     /**
+     * Set the 'end' flag to true, which will break the while loop inside run()
+     * essentially ending the thread.
+     */
+    public void setEnd() {
+        end = true;
+    }
+    
+    /**
      * Gets the elapsed time in milliseconds between each snapshot.
      * 
      * @return long
@@ -98,7 +108,8 @@
         // turn on all stats in the list
         setStatsOn(mbeanNames);
         // pause the thread from running every SNAPSHOT_DURATION seconds
-        while(true && SNAPSHOT_DURATION != Long.MAX_VALUE) {
+        // until something flips the flag to end this thread
+        while( !end ) {
             try {
                 // take a snapshot
                 System.out.println("======SNAPSHOT======");
@@ -133,6 +144,7 @@
                 e.printStackTrace();
             }
         }
+        System.out.println("Thread is stopped.");
     }
     
     /**