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