summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore/src
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-06-18 22:15:54 +0000
committerKeith Wall <kwall@apache.org>2014-06-18 22:15:54 +0000
commitbaa3cc48506e60d86f44577a410fd3683be30014 (patch)
treee334e48db83d6f9209b5a71f76e1b657a35b5710 /qpid/java/bdbstore/src
parent3a95f8c316e8d81a876094409a5952b3f41b5ba3 (diff)
downloadqpid-python-baa3cc48506e60d86f44577a410fd3683be30014.tar.gz
QPID-5822: [Java Broker] Replace low level BDB/JDBC attributes in fovour of context variables from the model
* BDB attributes environmentConfiguration/replicatedEnvironmentConfiguration removed. User can now specify context variables with the configuration keys that are understood by JE itself. * JDBC attributes bigIntType/bytesForBlob/varBinaryType/blobType are now context variables with names begining qpid.jdbcstore. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1603655 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/src')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java5
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java8
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java29
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java25
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java56
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentConfiguration.java7
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java21
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java41
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java13
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java4
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java8
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java5
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java8
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java42
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java39
15 files changed, 204 insertions, 107 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
index be1c7c140e..37792cdd43 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
@@ -131,7 +131,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
if (_environmentFacade == null)
{
- _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(storeSettings);
+ _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent, storeSettings);
_storeLocation = _environmentFacade.getStoreLocation();
}
else
@@ -617,8 +617,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
if (_environmentFacade == null)
{
- _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(messageStoreSettings
- );
+ _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent, messageStoreSettings);
_storeLocation = _environmentFacade.getStoreLocation();
}
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java
index e13ad0e452..3a4ace2238 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java
@@ -22,11 +22,11 @@ package org.apache.qpid.server.store.berkeleydb;
import java.util.Map;
+import org.apache.qpid.server.model.ConfiguredObject;
+
public interface EnvironmentFacadeFactory
{
- public static final String ENVIRONMENT_CONFIGURATION = "environmentConfiguration";
-
- EnvironmentFacade createEnvironmentFacade(Map<String, Object> storeSettings);
+ EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent,
+ Map<String, Object> storeSettings);
- String getType();
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java
new file mode 100644
index 0000000000..02ee53a53a
--- /dev/null
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.qpid.server.store.berkeleydb;
+
+import java.util.Map;
+
+public interface StandardEnvironmentConfiguration
+{
+ String getName();
+ String getStorePath();
+ Map<String, String> getParameters();
+}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
index f2690a5aa1..6a377babdf 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java
@@ -21,6 +21,7 @@
package org.apache.qpid.server.store.berkeleydb;
import java.io.File;
+import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -42,7 +43,6 @@ import com.sleepycat.je.Transaction;
public class StandardEnvironmentFacade implements EnvironmentFacade
{
private static final Logger LOGGER = Logger.getLogger(StandardEnvironmentFacade.class);
- public static final String TYPE = "BDB";
private final String _storePath;
private final ConcurrentHashMap<String, Database> _cachedDatabases = new ConcurrentHashMap<>();
@@ -51,17 +51,16 @@ public class StandardEnvironmentFacade implements EnvironmentFacade
private Environment _environment;
private final Committer _committer;
- public StandardEnvironmentFacade(String storePath,
- Map<String, String> attributes)
+ public StandardEnvironmentFacade(StandardEnvironmentConfiguration configuration)
{
- _storePath = storePath;
+ _storePath = configuration.getStorePath();
if (LOGGER.isInfoEnabled())
{
LOGGER.info("Creating environment at environment path " + _storePath);
}
- File environmentPath = new File(storePath);
+ File environmentPath = new File(_storePath);
if (!environmentPath.exists())
{
if (!environmentPath.mkdirs())
@@ -71,14 +70,24 @@ public class StandardEnvironmentFacade implements EnvironmentFacade
}
}
- String name = (String)attributes.get(ConfiguredObject.NAME);
+ String name = configuration.getName();
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
- for (Map.Entry<String, String> configItem : attributes.entrySet())
+ Map<String, String> params = new HashMap<>(EnvironmentFacade.ENVCONFIG_DEFAULTS);
+ params.putAll(configuration.getParameters());
+
+ for (Map.Entry<String, String> configItem : params.entrySet())
{
- LOGGER.debug("Setting EnvironmentConfig key " + configItem.getKey() + " to '" + configItem.getValue() + "'");
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Setting EnvironmentConfig key "
+ + configItem.getKey()
+ + " to '"
+ + configItem.getValue()
+ + "'");
+ }
envConfig.setConfigParam(configItem.getKey(), configItem.getValue());
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
index 49db913d6c..9c760d12e3 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java
@@ -20,9 +20,14 @@
*/
package org.apache.qpid.server.store.berkeleydb;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import com.sleepycat.je.config.ConfigParam;
+import com.sleepycat.je.config.EnvironmentParams;
+
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.store.MessageStore;
public class StandardEnvironmentFacadeFactory implements EnvironmentFacadeFactory
@@ -30,24 +35,49 @@ public class StandardEnvironmentFacadeFactory implements EnvironmentFacadeFactor
@SuppressWarnings("unchecked")
@Override
- public EnvironmentFacade createEnvironmentFacade(Map<String, Object> messageStoreSettings)
+ public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent,
+ final Map<String, Object> messageStoreSettings)
{
- Map<String, String> envConfigMap = new HashMap<String, String>();
- envConfigMap.putAll(EnvironmentFacade.ENVCONFIG_DEFAULTS);
+ final String storeLocation = (String) messageStoreSettings.get(MessageStore.STORE_PATH);
- Object environmentConfigurationAttributes = messageStoreSettings.get(ENVIRONMENT_CONFIGURATION);
- if (environmentConfigurationAttributes instanceof Map)
+ StandardEnvironmentConfiguration sec = new StandardEnvironmentConfiguration()
{
- envConfigMap.putAll((Map<String, String>) environmentConfigurationAttributes);
- }
- String storeLocation = (String) messageStoreSettings.get(MessageStore.STORE_PATH);
- return new StandardEnvironmentFacade(storeLocation, envConfigMap);
+ @Override
+ public String getName()
+ {
+ return parent.getName();
+ }
+
+ @Override
+ public String getStorePath()
+ {
+ return storeLocation;
+ }
+
+ @Override
+ public Map<String, String> getParameters()
+ {
+ return buildEnvironmentConfiguration(parent);
+ }
+ };
+
+ return new StandardEnvironmentFacade(sec);
}
- @Override
- public String getType()
+ private Map<String, String> buildEnvironmentConfiguration(ConfiguredObject<?> parent)
{
- return StandardEnvironmentFacade.TYPE;
- }
+ final Map<String, String> context = parent.getContext();
+ Map<String, String> envConfigMap = new HashMap<>();
+ for (ConfigParam cp : EnvironmentParams.SUPPORTED_PARAMS.values())
+ {
+ final String parameterName = cp.getName();
+ if (context.containsKey(parameterName) && !cp.isForReplication())
+ {
+ String contextValue = context.get(parameterName);
+ envConfigMap.put(parameterName, contextValue);
+ }
+ }
+ return Collections.unmodifiableMap(envConfigMap);
+ }
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentConfiguration.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentConfiguration.java
index 1fc37db902..90fb086dc5 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentConfiguration.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentConfiguration.java
@@ -23,16 +23,15 @@ package org.apache.qpid.server.store.berkeleydb.replication;
import java.util.Map;
-public interface ReplicatedEnvironmentConfiguration
+import org.apache.qpid.server.store.berkeleydb.StandardEnvironmentConfiguration;
+
+public interface ReplicatedEnvironmentConfiguration extends StandardEnvironmentConfiguration
{
- String getName();
String getGroupName();
String getHostPort();
String getHelperHostPort();
boolean isDesignatedPrimary();
int getPriority();
int getQuorumOverride();
- String getStorePath();
- Map<String, String> getParameters();
Map<String, String> getReplicationParameters();
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
index 2d411724a6..f8c08dec04 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
@@ -906,8 +906,6 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
String groupName = _configuration.getGroupName();
String helperHostPort = _configuration.getHelperHostPort();
String hostPort = _configuration.getHostPort();
- Map<String, String> environmentParameters = _configuration.getParameters();
- Map<String, String> replicationEnvironmentParameters = _configuration.getReplicationParameters();
boolean designatedPrimary = _configuration.isDesignatedPrimary();
int priority = _configuration.getPriority();
int quorumOverride = _configuration.getQuorumOverride();
@@ -926,16 +924,8 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
LOGGER.info("Quorum override " + quorumOverride);
}
- Map<String, String> replicationEnvironmentSettings = new HashMap<String, String>(REPCONFIG_DEFAULTS);
- if (replicationEnvironmentParameters != null && !replicationEnvironmentParameters.isEmpty())
- {
- replicationEnvironmentSettings.putAll(replicationEnvironmentParameters);
- }
- Map<String, String> environmentSettings = new HashMap<String, String>(EnvironmentFacade.ENVCONFIG_DEFAULTS);
- if (environmentParameters != null && !environmentParameters.isEmpty())
- {
- environmentSettings.putAll(environmentParameters);
- }
+ Map<String, String> replicationEnvironmentParameters = new HashMap<>(ReplicatedEnvironmentFacade.REPCONFIG_DEFAULTS);
+ replicationEnvironmentParameters.putAll(_configuration.getReplicationParameters());
ReplicationConfig replicationConfig = new ReplicationConfig(groupName, _configuration.getName(), hostPort);
replicationConfig.setHelperHosts(helperHostPort);
@@ -943,7 +933,7 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
replicationConfig.setNodePriority(priority);
replicationConfig.setElectableGroupSizeOverride(quorumOverride);
- for (Map.Entry<String, String> configItem : replicationEnvironmentSettings.entrySet())
+ for (Map.Entry<String, String> configItem : replicationEnvironmentParameters.entrySet())
{
if (LOGGER.isInfoEnabled())
{
@@ -952,13 +942,16 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
replicationConfig.setConfigParam(configItem.getKey(), configItem.getValue());
}
+ Map<String, String> environmentParameters = new HashMap<>(EnvironmentFacade.ENVCONFIG_DEFAULTS);
+ environmentParameters.putAll(_configuration.getParameters());
+
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
envConfig.setExceptionListener(new LoggingAsyncExceptionListener());
envConfig.setDurability(_defaultDurability);
- for (Map.Entry<String, String> configItem : environmentSettings.entrySet())
+ for (Map.Entry<String, String> configItem : environmentParameters.entrySet())
{
if (LOGGER.isInfoEnabled())
{
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
index c08318a657..6bab0db62b 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java
@@ -20,8 +20,14 @@
*/
package org.apache.qpid.server.store.berkeleydb.replication;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.Map;
+import com.sleepycat.je.config.ConfigParam;
+import com.sleepycat.je.config.EnvironmentParams;
+
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.store.berkeleydb.EnvironmentFacade;
import org.apache.qpid.server.store.berkeleydb.EnvironmentFacadeFactory;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
@@ -29,7 +35,7 @@ import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFactory
{
@Override
- public EnvironmentFacade createEnvironmentFacade(final Map<String, Object> messageStoreSettings)
+ public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings)
{
ReplicatedEnvironmentConfiguration configuration = new ReplicatedEnvironmentConfiguration()
{
@@ -45,18 +51,16 @@ public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFact
return (String) messageStoreSettings.get(BDBHAVirtualHostNode.STORE_PATH);
}
- @SuppressWarnings("unchecked")
@Override
public Map<String, String> getParameters()
{
- return (Map<String, String>) messageStoreSettings.get(BDBHAVirtualHostNode.ENVIRONMENT_CONFIGURATION);
+ return buildEnvironmentConfigParameters(parent);
}
- @SuppressWarnings("unchecked")
@Override
public Map<String, String> getReplicationParameters()
{
- return (Map<String, String>) messageStoreSettings.get(BDBHAVirtualHostNode.REPLICATED_ENVIRONMENT_CONFIGURATION);
+ return buildReplicationConfigParameters(parent);
}
@Override
@@ -99,10 +103,31 @@ public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFact
}
- @Override
- public String getType()
+ private Map<String, String> buildEnvironmentConfigParameters(ConfiguredObject<?> parent)
{
- return ReplicatedEnvironmentFacade.TYPE;
+ return buildConfig(parent, false);
}
+ private Map<String, String> buildReplicationConfigParameters(ConfiguredObject<?> parent)
+ {
+
+ return buildConfig(parent, true);
+ }
+
+ private Map<String, String> buildConfig(ConfiguredObject<?> parent, boolean selectReplicationParaemeters)
+ {
+ Map<String, String> targetMap = new HashMap<>();
+ for (ConfigParam entry : EnvironmentParams.SUPPORTED_PARAMS.values())
+ {
+ final String name = entry.getName();
+ if (entry.isForReplication() == selectReplicationParaemeters && parent.getContext().containsKey(name))
+ {
+ String contextValue = parent.getContext().get(name);
+ targetMap.put(name, contextValue);
+ }
+ }
+ return Collections.unmodifiableMap(targetMap);
+ }
+
+
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
index 2eeedd63a1..90737a9385 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
@@ -65,10 +65,12 @@ import org.apache.qpid.server.store.berkeleydb.replication.ReplicationGroupListe
import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode;
-@ManagedObject( category = false, type = "BDB_HA" )
+@ManagedObject( category = false, type = BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE )
public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtualHostNodeImpl> implements
BDBHAVirtualHostNode<BDBHAVirtualHostNodeImpl>
{
+ public static final String VIRTUAL_HOST_NODE_TYPE = "BDB_HA";
+
/**
* Length of time we synchronously await the a JE mutation to complete. It is not considered an error if we exceed this timeout, although a
* a warning will be logged.
@@ -82,9 +84,6 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
private final AtomicReference<ReplicatedEnvironment.State> _lastReplicatedEnvironmentState = new AtomicReference<>(ReplicatedEnvironment.State.UNKNOWN);
@ManagedAttributeField
- private Map<String, String> _environmentConfiguration;
-
- @ManagedAttributeField
private String _storePath;
@ManagedAttributeField
@@ -138,12 +137,6 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
}
@Override
- public Map<String, String> getEnvironmentConfiguration()
- {
- return _environmentConfiguration;
- }
-
- @Override
public String getStorePath()
{
return _storePath;
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java
index 91b2d7ae63..65a2fc1d30 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java
@@ -27,8 +27,4 @@ import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode;
public interface BDBVirtualHostNode<X extends BDBVirtualHostNode<X>> extends FileBasedVirtualHostNode<X>
{
- public static final String ENVIRONMENT_CONFIGURATION = "environmentConfiguration";
-
- @ManagedAttribute(mandatory=false)
- Map<String, String> getEnvironmentConfiguration();
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
index 61c01c7003..d37c626b57 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
@@ -38,9 +38,6 @@ public class BDBVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<BDBV
@ManagedAttributeField
private String _storePath;
- @ManagedAttributeField
- private Map<String, String> _environmentConfiguration;
-
@ManagedObjectFactoryConstructor
public BDBVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?> parent)
{
@@ -54,11 +51,6 @@ public class BDBVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<BDBV
}
@Override
- public Map<String, String> getEnvironmentConfiguration()
- {
- return _environmentConfiguration;
- }
- @Override
public String getStorePath()
{
return _storePath;
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
index a2ef422046..f9bdaeda93 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
@@ -56,6 +56,7 @@ import org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHostImpl;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNodeImpl;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeImpl;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.util.FileUtils;
@@ -132,14 +133,14 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase
UUID id = UUID.randomUUID();
Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(BDBHAVirtualHostNode.TYPE, "BDB_HA");
+ attributes.put(BDBHAVirtualHostNode.TYPE, BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE);
attributes.put(BDBHAVirtualHostNode.ID, id);
attributes.put(BDBHAVirtualHostNode.NAME, nodeName);
attributes.put(BDBHAVirtualHostNode.GROUP_NAME, groupName);
attributes.put(BDBHAVirtualHostNode.ADDRESS, nodeHostPort);
attributes.put(BDBHAVirtualHostNode.HELPER_ADDRESS, helperHostPort);
attributes.put(BDBHAVirtualHostNode.STORE_PATH, _bdbStorePath);
- attributes.put(BDBHAVirtualHostNode.REPLICATED_ENVIRONMENT_CONFIGURATION,
+ attributes.put(BDBHAVirtualHostNode.CONTEXT,
Collections.singletonMap(ReplicationConfig.REP_STREAM_TIMEOUT, repStreamTimeout));
BDBHAVirtualHostNode<?> node = createHaVHN(attributes);
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java
index 2afdaa4dd5..f445171005 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java
@@ -66,12 +66,16 @@ public class BDBMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestB
messageStoreSettings.put(MessageStore.STORE_PATH, storeLocation);
messageStoreSettings.put(MessageStore.OVERFULL_SIZE, OVERFULL_SIZE);
messageStoreSettings.put(MessageStore.UNDERFULL_SIZE, UNDERFULL_SIZE);
- Map<String,String> envMap = Collections.singletonMap("je.log.fileMax", MAX_BDB_LOG_SIZE);
- messageStoreSettings.put(EnvironmentFacadeFactory.ENVIRONMENT_CONFIGURATION, envMap);
return messageStoreSettings;
}
@Override
+ protected Map<String, String> createContextSettings()
+ {
+ return Collections.singletonMap("je.log.fileMax", MAX_BDB_LOG_SIZE);
+ }
+
+ @Override
protected MessageStore createStore() throws Exception
{
MessageStore store = (new BDBConfigurationStore()).getMessageStore();
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
index 5772498ebc..9521f7d85d 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java
@@ -20,8 +20,12 @@
*/
package org.apache.qpid.server.store.berkeleydb;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
import java.io.File;
import java.util.Collections;
+import java.util.Map;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.util.FileUtils;
@@ -29,6 +33,7 @@ import org.apache.qpid.util.FileUtils;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.Environment;
+import com.sleepycat.je.EnvironmentConfig;
public class StandardEnvironmentFacadeTest extends QpidTestCase
{
@@ -62,7 +67,7 @@ public class StandardEnvironmentFacadeTest extends QpidTestCase
public void testEnvironmentFacade() throws Exception
{
- EnvironmentFacade ef = getEnvironmentFacade();
+ EnvironmentFacade ef = createEnvironmentFacade();
assertNotNull("Environment should not be null", ef);
Environment e = ef.getEnvironment();
assertTrue("Environment is not valid", e.isValid());
@@ -70,18 +75,32 @@ public class StandardEnvironmentFacadeTest extends QpidTestCase
public void testClose() throws Exception
{
- EnvironmentFacade ef = getEnvironmentFacade();
+ EnvironmentFacade ef = createEnvironmentFacade();
ef.close();
Environment e = ef.getEnvironment();
assertNull("Environment should be null after facade close", e);
}
+ public void testOverrideJeParameter() throws Exception
+ {
+ String statCollectVarName = EnvironmentConfig.STATS_COLLECT;
+
+ EnvironmentFacade ef = createEnvironmentFacade();
+ assertEquals("false", ef.getEnvironment().getMutableConfig().getConfigParam(statCollectVarName));
+ ef.close();
+
+ ef = createEnvironmentFacade(Collections.singletonMap(statCollectVarName, "true"));
+ assertEquals("true", ef.getEnvironment().getMutableConfig().getConfigParam(statCollectVarName));
+ ef.close();
+ }
+
+
public void testOpenDatabaseReusesCachedHandle() throws Exception
{
DatabaseConfig createIfAbsentDbConfig = DatabaseConfig.DEFAULT.setAllowCreate(true);
- EnvironmentFacade ef = getEnvironmentFacade();
+ EnvironmentFacade ef = createEnvironmentFacade();
Database handle1 = ef.openDatabase("myDatabase", createIfAbsentDbConfig);
assertNotNull(handle1);
@@ -94,18 +113,21 @@ public class StandardEnvironmentFacadeTest extends QpidTestCase
assertNotSame("Expecting a new handle after database closure", handle1, handle3);
}
- EnvironmentFacade getEnvironmentFacade() throws Exception
+ EnvironmentFacade createEnvironmentFacade()
{
- if (_environmentFacade == null)
- {
- _environmentFacade = createEnvironmentFacade();
- }
+ _environmentFacade = createEnvironmentFacade(Collections.<String, String>emptyMap());
return _environmentFacade;
+
}
- EnvironmentFacade createEnvironmentFacade()
+ EnvironmentFacade createEnvironmentFacade(Map<String, String> map)
{
- return new StandardEnvironmentFacade(_storePath.getAbsolutePath(), Collections.<String, String>emptyMap());
+ StandardEnvironmentConfiguration sec = mock(StandardEnvironmentConfiguration.class);
+ when(sec.getName()).thenReturn(getTestName());
+ when(sec.getParameters()).thenReturn(map);
+ when(sec.getStorePath()).thenReturn(_storePath.getAbsolutePath());
+
+ return new StandardEnvironmentFacade(sec);
}
}
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
index 67364ada35..ec5098f369 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java
@@ -252,7 +252,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
};
TestStateChangeListener stateChangeListener = new TestStateChangeListener(State.MASTER);
- ReplicatedEnvironmentFacade replicatedEnvironmentFacade = addNode(State.MASTER, stateChangeListener, listener);
+ ReplicatedEnvironmentFacade replicatedEnvironmentFacade = addNode(stateChangeListener, listener);
assertTrue("Master was not started", stateChangeListener.awaitForStateChange(LISTENER_TIMEOUT, TimeUnit.SECONDS));
assertEquals("Unexpected number of nodes at start of test", 1, replicatedEnvironmentFacade.getNumberOfElectableGroupMembers());
@@ -296,7 +296,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
};
TestStateChangeListener stateChangeListener = new TestStateChangeListener(State.MASTER);
- ReplicatedEnvironmentFacade replicatedEnvironmentFacade = addNode(State.MASTER, stateChangeListener, listener);
+ ReplicatedEnvironmentFacade replicatedEnvironmentFacade = addNode(stateChangeListener, listener);
assertTrue("Master was not started", stateChangeListener.awaitForStateChange(LISTENER_TIMEOUT, TimeUnit.SECONDS));
String node2Name = TEST_NODE_NAME + "_2";
@@ -346,7 +346,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
};
TestStateChangeListener stateChangeListener = new TestStateChangeListener(State.MASTER);
- ReplicatedEnvironmentFacade replicatedEnvironmentFacade = addNode(State.MASTER, stateChangeListener, listener);
+ ReplicatedEnvironmentFacade replicatedEnvironmentFacade = addNode(stateChangeListener, listener);
assertTrue("Master was not started", stateChangeListener.awaitForStateChange(LISTENER_TIMEOUT, TimeUnit.SECONDS));
String node2NodeHostPort = "localhost" + ":" + getNextAvailable(TEST_NODE_PORT + 1);
@@ -357,10 +357,10 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
assertTrue("Node add not fired within timeout", nodeAddedLatch.await(LISTENER_TIMEOUT, TimeUnit.SECONDS));
ReplicationNode remoteNode = (ReplicationNode)nodeRef.get();
- assertEquals("Unexpcted node name", node2Name, remoteNode.getName());
+ assertEquals("Unexpected node name", node2Name, remoteNode.getName());
assertTrue("Node state not fired within timeout", stateLatch.await(LISTENER_TIMEOUT, TimeUnit.SECONDS));
- assertEquals("Unexpcted node state", State.REPLICA, stateRef.get().getNodeState());
+ assertEquals("Unexpected node state", State.REPLICA, stateRef.get().getNodeState());
}
public void testRemoveNodeFromGroup() throws Exception
@@ -419,7 +419,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
};
TestStateChangeListener stateChangeListener = new TestStateChangeListener(State.MASTER);
- final ReplicatedEnvironmentFacade masterEnvironment = addNode(State.MASTER, stateChangeListener, listener);
+ final ReplicatedEnvironmentFacade masterEnvironment = addNode(stateChangeListener, listener);
assertTrue("Master was not started", stateChangeListener.awaitForStateChange(LISTENER_TIMEOUT, TimeUnit.SECONDS));
masterEnvironment.setDesignatedPrimary(true);
@@ -434,7 +434,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
ReplicationNode node = addedNodeRef.get();
assertEquals("Unexpected node name", replicaName, node.getName());
- assertTrue("Node state was not heared", stateLatch.await(WAIT_STATE_CHANGE_TIMEOUT, TimeUnit.SECONDS));
+ assertTrue("Node state was not heard", stateLatch.await(WAIT_STATE_CHANGE_TIMEOUT, TimeUnit.SECONDS));
assertEquals("Unexpected node role", State.REPLICA, stateRef.get().getNodeState());
assertEquals("Unexpected node name", replicaName, stateRef.get().getNodeName());
@@ -478,7 +478,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
}
};
- addNode(State.MASTER, stateChangeListener, new NoopReplicationGroupListener());
+ addNode(stateChangeListener, new NoopReplicationGroupListener());
assertTrue("Master was not started", masterLatch.await(LISTENER_TIMEOUT, TimeUnit.SECONDS));
int replica1Port = getNextAvailable(TEST_NODE_PORT + 1);
@@ -520,7 +520,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
}
}
};
- ReplicatedEnvironmentFacade firstNode = addNode(State.MASTER, stateChangeListener, new NoopReplicationGroupListener());
+ ReplicatedEnvironmentFacade firstNode = addNode(stateChangeListener, new NoopReplicationGroupListener());
assertTrue("Environment did not become a master", firstNodeMasterStateLatch.await(10, TimeUnit.SECONDS));
int replica1Port = getNextAvailable(TEST_NODE_PORT + 1);
@@ -548,7 +548,8 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
}
}
};
- ReplicatedEnvironmentFacade thirdNode = addNode(TEST_NODE_NAME + "_2", node2NodeHostPort, TEST_DESIGNATED_PRIMARY, State.REPLICA, testStateChangeListener, new NoopReplicationGroupListener());
+ ReplicatedEnvironmentFacade thirdNode = addNode(TEST_NODE_NAME + "_2", node2NodeHostPort, TEST_DESIGNATED_PRIMARY,
+ testStateChangeListener, new NoopReplicationGroupListener());
assertTrue("Environment did not become a replica", replicaStateLatch.await(10, TimeUnit.SECONDS));
assertEquals(3, thirdNode.getNumberOfElectableGroupMembers());
@@ -578,7 +579,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
}
}
};
- ReplicatedEnvironmentFacade firstNode = addNode(State.MASTER, stateChangeListener, new NoopReplicationGroupListener());
+ ReplicatedEnvironmentFacade firstNode = addNode(stateChangeListener, new NoopReplicationGroupListener());
assertTrue("Environment did not become a master", firstNodeMasterStateLatch.await(10, TimeUnit.SECONDS));
int replica1Port = getNextAvailable(TEST_NODE_PORT + 1);
@@ -607,7 +608,8 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
}
};
String thirdNodeName = TEST_NODE_NAME + "_2";
- ReplicatedEnvironmentFacade thirdNode = addNode(thirdNodeName, node2NodeHostPort, TEST_DESIGNATED_PRIMARY, State.REPLICA, testStateChangeListener, new NoopReplicationGroupListener());
+ ReplicatedEnvironmentFacade thirdNode = addNode(thirdNodeName, node2NodeHostPort, TEST_DESIGNATED_PRIMARY,
+ testStateChangeListener, new NoopReplicationGroupListener());
assertTrue("Environment did not become a replica", replicaStateLatch.await(10, TimeUnit.SECONDS));
assertEquals(3, thirdNode.getNumberOfElectableGroupMembers());
@@ -665,7 +667,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
private ReplicatedEnvironmentFacade createMaster(ReplicationGroupListener replicationGroupListener) throws Exception
{
TestStateChangeListener stateChangeListener = new TestStateChangeListener(State.MASTER);
- ReplicatedEnvironmentFacade env = addNode(State.MASTER, stateChangeListener, replicationGroupListener);
+ ReplicatedEnvironmentFacade env = addNode(stateChangeListener, replicationGroupListener);
assertTrue("Environment was not created", stateChangeListener.awaitForStateChange(LISTENER_TIMEOUT, TimeUnit.SECONDS));
return env;
}
@@ -680,14 +682,15 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
TestStateChangeListener testStateChangeListener, ReplicationGroupListener replicationGroupListener)
throws InterruptedException
{
- ReplicatedEnvironmentFacade replicaEnvironmentFacade = addNode(nodeName, nodeHostPort, TEST_DESIGNATED_PRIMARY, State.REPLICA, testStateChangeListener, replicationGroupListener);
+ ReplicatedEnvironmentFacade replicaEnvironmentFacade = addNode(nodeName, nodeHostPort, TEST_DESIGNATED_PRIMARY,
+ testStateChangeListener, replicationGroupListener);
boolean awaitForStateChange = testStateChangeListener.awaitForStateChange(LISTENER_TIMEOUT, TimeUnit.SECONDS);
assertTrue("Replica " + nodeName + " did not go into desired state; current actual state is " + testStateChangeListener.getCurrentActualState(), awaitForStateChange);
return replicaEnvironmentFacade;
}
private ReplicatedEnvironmentFacade addNode(String nodeName, String nodeHostPort, boolean designatedPrimary,
- State desiredState, StateChangeListener stateChangeListener, ReplicationGroupListener replicationGroupListener)
+ StateChangeListener stateChangeListener, ReplicationGroupListener replicationGroupListener)
{
ReplicatedEnvironmentConfiguration config = createReplicatedEnvironmentConfiguration(nodeName, nodeHostPort, designatedPrimary);
ReplicatedEnvironmentFacade ref = new ReplicatedEnvironmentFacade(config);
@@ -697,9 +700,11 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase
return ref;
}
- private ReplicatedEnvironmentFacade addNode(State desiredState, StateChangeListener stateChangeListener, ReplicationGroupListener replicationGroupListener)
+ private ReplicatedEnvironmentFacade addNode(StateChangeListener stateChangeListener,
+ ReplicationGroupListener replicationGroupListener)
{
- return addNode(TEST_NODE_NAME, TEST_NODE_HOST_PORT, TEST_DESIGNATED_PRIMARY, desiredState, stateChangeListener, replicationGroupListener);
+ return addNode(TEST_NODE_NAME, TEST_NODE_HOST_PORT, TEST_DESIGNATED_PRIMARY,
+ stateChangeListener, replicationGroupListener);
}
private ReplicatedEnvironmentConfiguration createReplicatedEnvironmentConfiguration(String nodeName, String nodeHostPort, boolean designatedPrimary)