diff --git a/modules/dcache/src/main/java/diskCacheV111/services/space/Manager.java b/modules/dcache/src/main/java/diskCacheV111/services/space/Manager.java
index bcfc659b18b..7550a7fb9f3 100644
--- a/modules/dcache/src/main/java/diskCacheV111/services/space/Manager.java
+++ b/modules/dcache/src/main/java/diskCacheV111/services/space/Manager.java
@@ -33,6 +33,7 @@
import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
import com.google.common.primitives.Longs;
+import org.dcache.util.CDCExecutorServiceDecorator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Required;
@@ -55,6 +56,8 @@
import java.util.Map;
import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
import diskCacheV111.poolManager.PoolPreferenceLevel;
import diskCacheV111.poolManager.PoolSelectionUnit;
@@ -80,7 +83,6 @@
import diskCacheV111.util.PnfsHandler;
import diskCacheV111.util.PnfsId;
import diskCacheV111.util.RetentionPolicy;
-import diskCacheV111.util.ThreadManager;
import diskCacheV111.util.VOInfo;
import diskCacheV111.vehicles.DoorTransferFinishedMessage;
import diskCacheV111.vehicles.IpProtocolInfo;
@@ -151,6 +153,8 @@ public final class Manager
private SpaceManagerAuthorizationPolicy authorizationPolicy;
+ private Executor executor;
+
private JdbcConnectionPool connection_pool;
private DBManager dbManager;
private static final Logger logger = LoggerFactory.getLogger(Manager.class);
@@ -237,6 +241,12 @@ public void setLinkGroupAuthorizationFileName(String linkGroupAuthorizationFileN
this.linkGroupAuthorizationFileName = linkGroupAuthorizationFileName;
}
+ @Required
+ public void setExecutor(ExecutorService executor)
+ {
+ this.executor = new CDCExecutorServiceDecorator(executor);
+ }
+
@Required
public void setDbManager(DBManager manager)
{
@@ -2458,7 +2468,7 @@ public void messageArrived(final CellMessage envelope,
if (!isNotificationMessage(message) && !isSpaceManagerMessage(message)) {
messageToForward(envelope, message);
} else if (spaceManagerEnabled) {
- ThreadManager.execute(new Runnable()
+ executor.execute(new Runnable()
{
@Override
public void run()
@@ -2503,7 +2513,7 @@ public void messageToForward(final CellMessage envelope, final Message message)
if (envelope.nextDestination()) {
if (spaceManagerEnabled && isInterceptedMessage(message)) {
- ThreadManager.execute(new Runnable()
+ executor.execute(new Runnable()
{
@Override
public void run()
diff --git a/modules/dcache/src/main/resources/diskCacheV111/services/space/spacemanager.xml b/modules/dcache/src/main/resources/diskCacheV111/services/space/spacemanager.xml
index 1e1c1ac2da5..b511fdc3016 100644
--- a/modules/dcache/src/main/resources/diskCacheV111/services/space/spacemanager.xml
+++ b/modules/dcache/src/main/resources/diskCacheV111/services/space/spacemanager.xml
@@ -36,6 +36,19 @@
+
+ Thread pool for message processing
+
+
+
+
+
+
+
+
+
Pool manager communication stub
@@ -91,6 +104,7 @@
+