diff options
| author | Keith Wall <kwall@apache.org> | 2014-06-18 22:15:54 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-06-18 22:15:54 +0000 |
| commit | baa3cc48506e60d86f44577a410fd3683be30014 (patch) | |
| tree | e334e48db83d6f9209b5a71f76e1b657a35b5710 /qpid/java/bdbstore/src | |
| parent | 3a95f8c316e8d81a876094409a5952b3f41b5ba3 (diff) | |
| download | qpid-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')
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) |
