diff options
| author | Martin Ritchie <ritchiem@apache.org> | 2010-05-18 14:42:04 +0000 |
|---|---|---|
| committer | Martin Ritchie <ritchiem@apache.org> | 2010-05-18 14:42:04 +0000 |
| commit | 33ae3dd0a837eca450d8a42958876f3313b50367 (patch) | |
| tree | 6490d561171f084a94737b84a5332cd410b4cb61 /java/broker/src/main | |
| parent | fedbf2e64e80289cad939df99fae633adfaa02a4 (diff) | |
| download | qpid-python-33ae3dd0a837eca450d8a42958876f3313b50367.tar.gz | |
QPID-2584 : Update VirtualHostImp and VHPlugin to ensure that a RuntimeException occuring in a plugin will not cause the Plugin to stop running.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@945676 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker/src/main')
3 files changed, 33 insertions, 5 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java index 4e29a3e526..780f5f1159 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java @@ -210,4 +210,9 @@ public class VirtualHostConfiguration extends ConfigurationPlugin "security", "store", "housekeeping"}; } + + public int getHouseKeepingThreadCount() + { + return _config.getInt("housekeeping.threadCount", Runtime.getRuntime().availableProcessors()); + } } diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index 4331bbf972..0252d265fd 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -332,7 +332,8 @@ public class VirtualHostImpl implements Accessable, VirtualHost if (plugins != null) { - ScheduledThreadPoolExecutor vhostTasks = new ScheduledThreadPoolExecutor(plugins.size()); + ScheduledThreadPoolExecutor vhostTasks + = new ScheduledThreadPoolExecutor(_configuration.getHouseKeepingThreadCount()); for (String pluginName : plugins.keySet()) { diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java index 6c9526346c..e30b5e1934 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java +++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java @@ -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(); + + } |
