From 81a3ecc7db6d99434435f2e83149bcf8d3e08542 Mon Sep 17 00:00:00 2001 From: brinn <brinn> Date: Fri, 4 Sep 2009 18:44:55 +0000 Subject: [PATCH] add: parameter commandqueue-dir to service.properties of data store server SVN: 12482 --- datastore_server/dist/etc/service.properties | 3 +++ datastore_server/etc/service.properties | 3 +++ .../server/DataSetCommandExecutor.java | 4 ++-- .../dss/generic/server/DataStoreService.java | 24 ++++++++++++++++--- .../IDataSetCommandExecutorFactory.java | 7 +++--- .../source/java/dssApplicationContext.xml | 1 + .../generic/server/DataStoreServiceTest.java | 2 +- 7 files changed, 35 insertions(+), 9 deletions(-) diff --git a/datastore_server/dist/etc/service.properties b/datastore_server/dist/etc/service.properties index e86f9fa5cb7..a0ad5b4da2a 100644 --- a/datastore_server/dist/etc/service.properties +++ b/datastore_server/dist/etc/service.properties @@ -4,6 +4,9 @@ data-store-server-code = DSS1 # The root directory of the data store storeroot-dir = data/store +# The directory where the command queue file is located; defaults to storeroot-dir +commandqueue-dir = + # Port port = 8444 diff --git a/datastore_server/etc/service.properties b/datastore_server/etc/service.properties index c479994f10e..35f1bb2dfd6 100644 --- a/datastore_server/etc/service.properties +++ b/datastore_server/etc/service.properties @@ -4,6 +4,9 @@ data-store-server-code = my-dss # The root directory of the data store storeroot-dir = targets/store +# The directory where the command queue file is located; defaults to storeroot-dir +commandqueue-dir = + # Port port = 8889 diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java index 20484481b65..9e48f5b056e 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java @@ -47,10 +47,10 @@ class DataSetCommandExecutor implements IDataSetCommandExecutor private final IExtendedBlockingQueue<IDataSetCommand> commandQueue; - public DataSetCommandExecutor(File store) + public DataSetCommandExecutor(File store, File queueDir) { this.store = store; - File queueFile = getCommandQueueFile(store); + File queueFile = getCommandQueueFile(queueDir); commandQueue = ExtendedBlockingQueueFactory.<IDataSetCommand> createPersistRecordBased(queueFile); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java index 69c27cde5aa..d4b898ef44c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java @@ -32,6 +32,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IProcessingPlug import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IReportingPluginTask; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.PluginTaskProvider; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.PluginTaskProviders; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; @@ -56,6 +57,8 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic private final PluginTaskProviders pluginTaskParameters; private File storeRoot; + + private File commandQueueDirOrNull; private IDataSetCommandExecutor commandExecuter; @@ -64,9 +67,9 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic { this(sessionTokenManager, new IDataSetCommandExecutorFactory() { - public IDataSetCommandExecutor create(File store) + public IDataSetCommandExecutor create(File store, File queueDir) { - return new DataSetCommandExecutor(store); + return new DataSetCommandExecutor(store, queueDir); } }, mailClientParameters, pluginTaskParameters); } @@ -86,6 +89,17 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic this.storeRoot = storeRoot; } + public final void setCommandQueueDir(String queueDirOrNull) + { + if (StringUtils.isBlank(queueDirOrNull)) + { + this.commandQueueDirOrNull = null; + } else + { + this.commandQueueDirOrNull = new File(queueDirOrNull); + } + } + public void afterPropertiesSet() { String prefix = "Property 'storeRoot' "; @@ -111,7 +125,11 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic operationLog.info("Creates root directory of the data store: " + storeRootPath); } } - commandExecuter = commandExecutorFactory.create(storeRoot); + if (commandQueueDirOrNull == null) + { + commandQueueDirOrNull = storeRoot; + } + commandExecuter = commandExecutorFactory.create(storeRoot, commandQueueDirOrNull); commandExecuter.start(); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java index 6081d0040f5..7303b8d9e95 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java @@ -20,13 +20,14 @@ import java.io.File; /** * Factory of {@link IDataSetCommandExecutor} operating on a specified data store. - * + * * @author Franz-Josef Elmer */ interface IDataSetCommandExecutorFactory { /** - * Creates command executor for the specified data store. + * Creates command executor for the specified data store. The file of the command queue will be + * located in <var>commandQueueDir</var>. */ - IDataSetCommandExecutor create(File store); + IDataSetCommandExecutor create(File store, File commandQueueDir); } diff --git a/datastore_server/source/java/dssApplicationContext.xml b/datastore_server/source/java/dssApplicationContext.xml index c269a1a67a5..13580c66641 100644 --- a/datastore_server/source/java/dssApplicationContext.xml +++ b/datastore_server/source/java/dssApplicationContext.xml @@ -46,6 +46,7 @@ </constructor-arg> <constructor-arg ref="plugin-tasks" /> <property name="storeRoot" value="${storeroot-dir}"/> + <property name="commandQueueDir" value="${commandqueue-dir}"/> </bean> </property> <property name="serviceInterface" value="ch.systemsx.cisd.openbis.generic.shared.IDataStoreService" /> diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java index 877426063f7..c10ac29ab76 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java @@ -283,7 +283,7 @@ public class DataStoreServiceTest extends AssertJUnit context.checking(new Expectations() { { - one(commandExecutorFactory).create(TEST_STORE); + one(commandExecutorFactory).create(TEST_STORE, TEST_STORE); will(returnValue(commandExecutor)); one(commandExecutor).start(); -- GitLab