Author: ritchiem
Date: Tue May 18 14:42:04 2010
New Revision: 945676

URL: http://svn.apache.org/viewvc?rev=945676&view=rev
Log:
QPID-2584 : Update VirtualHostImp and VHPlugin to ensure that a 
RuntimeException occuring in a plugin will not cause the Plugin to stop running.

Modified:
    qpid/trunk/qpid/java/broker/etc/virtualhosts.xml
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java

Modified: qpid/trunk/qpid/java/broker/etc/virtualhosts.xml
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/virtualhosts.xml?rev=945676&r1=945675&r2=945676&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/etc/virtualhosts.xml (original)
+++ qpid/trunk/qpid/java/broker/etc/virtualhosts.xml Tue May 18 14:42:04 2010
@@ -30,6 +30,7 @@
             </store>
 
             <housekeeping>
+                <threadCount>2</threadCount>
                 <expiredMessageCheckPeriod>20000</expiredMessageCheckPeriod>
             </housekeeping>
 

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java?rev=945676&r1=945675&r2=945676&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
 Tue May 18 14:42:04 2010
@@ -210,4 +210,9 @@ public class VirtualHostConfiguration ex
                             "security", "store", "housekeeping"};
 
     }
+
+    public int getHouseKeepingThreadCount()
+    {
+        return _config.getInt("housekeeping.threadCount", 
Runtime.getRuntime().availableProcessors());
+    }
 }

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java?rev=945676&r1=945675&r2=945676&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
 Tue May 18 14:42:04 2010
@@ -332,7 +332,8 @@ public class VirtualHostImpl implements 
 
             if (plugins != null)
             {
-                ScheduledThreadPoolExecutor vhostTasks = new 
ScheduledThreadPoolExecutor(plugins.size());
+                ScheduledThreadPoolExecutor vhostTasks
+                        = new 
ScheduledThreadPoolExecutor(_configuration.getHouseKeepingThreadCount());
 
                 for (String pluginName : plugins.keySet())
                 {

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java?rev=945676&r1=945675&r2=945676&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java
 Tue May 18 14:42:04 2010
@@ -20,21 +20,43 @@
  */
 package org.apache.qpid.server.virtualhost.plugins;
 
-public interface VirtualHostPlugin extends Runnable
+import org.apache.log4j.Logger;
+
+public abstract class VirtualHostPlugin implements Runnable
 {
-    public void run();
+    Logger _logger = Logger.getLogger(this.getClass());
+
+    final public void run()
+    {
+        try
+        {
+           execute();
+        }
+        catch (Throwable e)
+        {
+           _logger.warn(this.getClass().getSimpleName()+" throw exception: " + 
e);
+        }
+    }
+
 
     /**
      * Long value representing the delay between repeats
      *
      * @return
      */
-    public long getDelay();
+    public abstract long getDelay();
 
     /**
      * Option to specify what the delay value represents
      * @see java.util.concurrent.TimeUnit for valid value.
      * @return
      */
-    public String getTimeUnit();
+    public abstract String getTimeUnit();
+
+    /**
+     * Execute the plugin.
+     */
+    public abstract void execute();
+
+
 }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to