summaryrefslogtreecommitdiff
path: root/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
diff options
context:
space:
mode:
authorAndrew Donald Kennedy <grkvlt@apache.org>2010-12-06 16:05:46 +0000
committerAndrew Donald Kennedy <grkvlt@apache.org>2010-12-06 16:05:46 +0000
commit80ba5c5efdc23e3922b8f8f5152ceeaefa6951b6 (patch)
tree2eb2141eb77d43701e718b5b5ab1cbd07401015f /qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
parent1d44d6e7a3369fb7773ba50d02c3baa8955da382 (diff)
downloadqpid-python-80ba5c5efdc23e3922b8f8f5152ceeaefa6951b6.tar.gz
Attempt one at merge from r1021441:HEADgrkvlt-network-20101013
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/grkvlt-network-20101013@1042697 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java47
1 files changed, 39 insertions, 8 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
index c54173a281..1038e8fbd0 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
@@ -27,6 +27,7 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import javax.management.NotCompliantMBeanException;
@@ -215,6 +216,25 @@ public class VirtualHostImpl implements VirtualHost
_connectionRegistry = new ConnectionRegistry();
_houseKeepingTasks = new ScheduledThreadPoolExecutor(_configuration.getHouseKeepingThreadCount());
+ _houseKeepingTasks.setThreadFactory(new ThreadFactory()
+ {
+ public Thread newThread(Runnable r)
+ {
+ Thread t = new Thread(r);
+ String name = "HouseKeeping";
+ StackTraceElement[] trace = Thread.currentThread().getStackTrace();
+ for (StackTraceElement elt : trace)
+ {
+ if (elt.getClassName().endsWith("Test"))
+ {
+ name += "-" + elt.getClassName();
+// break; // FIXME
+ }
+ }
+ t.setName(name);
+ return t;
+ }
+ });
_queueRegistry = new DefaultQueueRegistry(this);
@@ -248,6 +268,7 @@ public class VirtualHostImpl implements VirtualHost
_brokerMBean = new AMQBrokerManagerMBean(_virtualHostMBean);
_brokerMBean.register();
+
initialiseHouseKeeping(hostConfig.getHousekeepingExpiredMessageCheckPeriod());
}
@@ -275,12 +296,22 @@ public class VirtualHostImpl implements VirtualHost
}
catch (Exception e)
{
- _logger.error("Exception in housekeeping for queue: "
- + q.getNameShortString().toString(), e);
- //Don't throw exceptions as this will stop the
- // house keeping task from running.
+ _logger.error("Exception in housekeeping for queue: " + q.getName(), e);
+ // Don't throw exceptions as this will stop the task from running.
}
}
+ }
+ }
+
+ class CheckTransactionsTask extends HouseKeepingTask
+ {
+ public CheckTransactionsTask(VirtualHost vhost)
+ {
+ super(vhost);
+ }
+
+ public void execute()
+ {
for (AMQConnectionModel connection : getConnectionRegistry().getConnections())
{
_logger.debug("Checking for long running open transactions on connection " + connection);
@@ -293,17 +324,19 @@ public class VirtualHostImpl implements VirtualHost
_configuration.getTransactionTimeoutOpenClose(),
_configuration.getTransactionTimeoutIdleWarn(),
_configuration.getTransactionTimeoutIdleClose());
- }
+ }
catch (Exception e)
{
_logger.error("Exception in housekeeping for connection: " + connection.toString(), e);
+ // Don't throw exceptions as this will stop the task from running.
}
}
}
}
- }
+ };
scheduleHouseKeepingTask(period, new ExpiredMessagesTask(this));
+ scheduleHouseKeepingTask(period, new CheckTransactionsTask(this));
Map<String, VirtualHostPluginFactory> plugins =
ApplicationRegistry.getInstance().getPluginManager().getVirtualHostPlugins();
@@ -368,13 +401,11 @@ public class VirtualHostImpl implements VirtualHost
_houseKeepingTasks.setCorePoolSize(newSize);
}
-
public int getHouseKeepingActiveCount()
{
return _houseKeepingTasks.getActiveCount();
}
-
private void initialiseMessageStore(VirtualHostConfiguration hostConfig) throws Exception
{
String messageStoreClass = hostConfig.getMessageStoreClass();