diff options
| author | Andrew MacBean <macbean@apache.org> | 2014-06-26 11:19:54 +0000 |
|---|---|---|
| committer | Andrew MacBean <macbean@apache.org> | 2014-06-26 11:19:54 +0000 |
| commit | 8a1190a3bc398233b3cb9a295add11eef0f3cec4 (patch) | |
| tree | 15ecfb671967401f81b9dce15e46aa9f1a33489c /qpid/java/bdbstore/src | |
| parent | 4ad072fd1cca374bcf36292bcf83aba74f18f08c (diff) | |
| download | qpid-python-8a1190a3bc398233b3cb9a295add11eef0f3cec4.tar.gz | |
QPID-5821: [Java Broker] Refactor MessageStore and DurableConfigurationStore interfaces to remove message store settings map.
VirtualHost model objects now have attributes.
Work done by Keith Wall <kwall@apache.org> and me.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1605737 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/src')
18 files changed, 241 insertions, 128 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 e8555dd819..7fb973d089 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 @@ -46,6 +46,7 @@ import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreProvider; +import org.apache.qpid.server.store.SizeMonitorSettings; import org.apache.qpid.server.store.StoreException; import org.apache.qpid.server.store.berkeleydb.entry.HierarchyKey; import org.apache.qpid.server.store.berkeleydb.tuple.ConfiguredObjectBinding; @@ -89,7 +90,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi } @Override - public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) + public void openConfigurationStore(ConfiguredObject<?> parent) { if (_configurationStoreOpen.compareAndSet(false, true)) { @@ -97,7 +98,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi if (_environmentFacade == null) { - _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent, storeSettings); + _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent); _storeLocation = _environmentFacade.getStoreLocation(); } else @@ -500,23 +501,15 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi private ConfiguredObject<?> _parent; @Override - public void openMessageStore(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings) + public void openMessageStore(final ConfiguredObject<?> parent) { if (_messageStoreOpen.compareAndSet(false, true)) { _parent = parent; - Object overfullAttr = messageStoreSettings.get(OVERFULL_SIZE); - Object underfullAttr = messageStoreSettings.get(UNDERFULL_SIZE); - - _persistentSizeHighThreshold = overfullAttr == null ? -1l : - overfullAttr instanceof Number - ? ((Number) overfullAttr).longValue() - : Long.parseLong(overfullAttr.toString()); - _persistentSizeLowThreshold = underfullAttr == null ? _persistentSizeHighThreshold : - underfullAttr instanceof Number - ? ((Number) underfullAttr).longValue() - : Long.parseLong(underfullAttr.toString()); + final SizeMonitorSettings sizeMonitorSettings = (SizeMonitorSettings) parent; + _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize(); + _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize(); if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l) { diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java index c3969090be..5b7573c17f 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java @@ -21,13 +21,13 @@ package org.apache.qpid.server.store.berkeleydb; import java.io.File; -import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import com.sleepycat.je.DatabaseException; import org.apache.log4j.Logger; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.store.SizeMonitorSettings; import org.apache.qpid.server.store.StoreException; import org.apache.qpid.util.FileUtils; @@ -61,26 +61,22 @@ public class BDBMessageStore extends AbstractBDBMessageStore } @Override - public void openMessageStore(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings) + public void openMessageStore(final ConfiguredObject<?> parent) { if (_messageStoreOpen.compareAndSet(false, true)) { _parent = parent; - Object overfullAttr = messageStoreSettings.get(OVERFULL_SIZE); - Object underfullAttr = messageStoreSettings.get(UNDERFULL_SIZE); + final SizeMonitorSettings sizeMonitorSettings = (SizeMonitorSettings) parent; + _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize(); + _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize(); - _persistentSizeHighThreshold = overfullAttr == null ? -1l : - overfullAttr instanceof Number ? ((Number) overfullAttr).longValue() : Long.parseLong(overfullAttr.toString()); - _persistentSizeLowThreshold = underfullAttr == null ? _persistentSizeHighThreshold : - underfullAttr instanceof Number ? ((Number) underfullAttr).longValue() : Long.parseLong(underfullAttr.toString()); - - if(_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l) + if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l) { _persistentSizeLowThreshold = _persistentSizeHighThreshold; } - _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent, messageStoreSettings); + _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent); _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 3a4ace2238..39f8827754 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 @@ -26,7 +26,6 @@ import org.apache.qpid.server.model.ConfiguredObject; public interface EnvironmentFacadeFactory { - EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent, - Map<String, Object> storeSettings); + EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent); } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/HASettings.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/HASettings.java new file mode 100644 index 0000000000..31e9987182 --- /dev/null +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/HASettings.java @@ -0,0 +1,37 @@ +/* + * 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 org.apache.qpid.server.store.FileBasedSettings; + +public interface HASettings extends FileBasedSettings +{ + String getGroupName(); + + String getAddress(); + + String getHelperAddress(); + + boolean isDesignatedPrimary(); + + int getPriority(); + + int getQuorumOverride(); +} 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 9c760d12e3..ab0d1ab9ef 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 @@ -28,17 +28,16 @@ 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; +import org.apache.qpid.server.store.FileBasedSettings; public class StandardEnvironmentFacadeFactory implements EnvironmentFacadeFactory { - @SuppressWarnings("unchecked") @Override - public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent, - final Map<String, Object> messageStoreSettings) + public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent) { - final String storeLocation = (String) messageStoreSettings.get(MessageStore.STORE_PATH); + final FileBasedSettings settings = (FileBasedSettings)parent; + final String storeLocation = settings.getStorePath(); StandardEnvironmentConfiguration sec = new StandardEnvironmentConfiguration() { 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 6bab0db62b..d7b01bc829 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 @@ -30,25 +30,27 @@ 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; +import org.apache.qpid.server.store.berkeleydb.HASettings; public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFactory { @Override - public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent, final Map<String, Object> messageStoreSettings) + public EnvironmentFacade createEnvironmentFacade(final ConfiguredObject<?> parent) { + final HASettings settings = (HASettings) parent; + ReplicatedEnvironmentConfiguration configuration = new ReplicatedEnvironmentConfiguration() { @Override public boolean isDesignatedPrimary() { - return (Boolean)messageStoreSettings.get(BDBHAVirtualHostNode.DESIGNATED_PRIMARY); + return settings.isDesignatedPrimary(); } @Override public String getStorePath() { - return (String) messageStoreSettings.get(BDBHAVirtualHostNode.STORE_PATH); + return settings.getStorePath(); } @Override @@ -66,37 +68,37 @@ public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFact @Override public int getQuorumOverride() { - return (Integer)messageStoreSettings.get(BDBHAVirtualHostNode.QUORUM_OVERRIDE); + return settings.getQuorumOverride(); } @Override public int getPriority() { - return (Integer)messageStoreSettings.get(BDBHAVirtualHostNode.PRIORITY); + return settings.getPriority(); } @Override public String getName() { - return (String)messageStoreSettings.get(BDBHAVirtualHostNode.NAME); + return parent.getName(); } @Override public String getHostPort() { - return (String)messageStoreSettings.get(BDBHAVirtualHostNode.ADDRESS); + return settings.getAddress(); } @Override public String getHelperHostPort() { - return (String)messageStoreSettings.get(BDBHAVirtualHostNode.HELPER_ADDRESS); + return settings.getHelperAddress(); } @Override public String getGroupName() { - return (String)messageStoreSettings.get(BDBHAVirtualHostNode.GROUP_NAME); + return settings.getGroupName(); } }; return new ReplicatedEnvironmentFacade(configuration); diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java index ab81755f53..74242df7c6 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java @@ -66,9 +66,6 @@ public class BDBHAReplicaVirtualHost extends AbstractConfiguredObject<BDBHARepli private final StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived; @ManagedAttributeField - private Map<String, Object> _messageStoreSettings; - - @ManagedAttributeField private boolean _queue_deadLetterQueueEnabled; @ManagedAttributeField @@ -220,12 +217,6 @@ public class BDBHAReplicaVirtualHost extends AbstractConfiguredObject<BDBHARepli } @Override - public Map<String, Object> getMessageStoreSettings() - { - return null; - } - - @Override public long getQueueCount() { return 0; diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java index 8cecbe172e..600aa66be6 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java @@ -24,14 +24,16 @@ import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.model.DerivedAttribute; import org.apache.qpid.server.model.ManagedAttribute; import org.apache.qpid.server.queue.AMQQueue; +import org.apache.qpid.server.store.SizeMonitorSettings; import org.apache.qpid.server.virtualhost.VirtualHostImpl; -public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>> +public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, SizeMonitorSettings { String REMOTE_TRANSACTION_SYNCHRONIZATION_POLICY = "remoteTransactionSynchronizationPolicy"; String LOCAL_TRANSACTION_SYNCHRONIZATION_POLICY = "localTransactionSynchronizationPolicy"; String COALESCING_SYNC = "coalescingSync"; String DURABILITY = "durability"; + String STORE_PATH = "storePath"; @ManagedAttribute( defaultValue = "SYNC") String getLocalTransactionSynchronizationPolicy(); @@ -44,4 +46,10 @@ public interface BDBHAVirtualHost<X extends BDBHAVirtualHost<X>> extends Virtual @DerivedAttribute String getDurability(); + + @ManagedAttribute(mandatory = true, defaultValue = "0") + Long getStoreUnderfullSize(); + + @ManagedAttribute(mandatory = true, defaultValue = "0") + Long getStoreOverfullSize(); } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java index d28435b484..ba210b470c 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java @@ -35,10 +35,10 @@ import org.apache.qpid.server.virtualhost.AbstractVirtualHost; import com.sleepycat.je.Durability.SyncPolicy; -@ManagedObject( category = false, type = "BDB_HA" ) +@ManagedObject( category = false, type = BDBHAVirtualHostImpl.VIRTUAL_HOST_TYPE ) public class BDBHAVirtualHostImpl extends AbstractVirtualHost<BDBHAVirtualHostImpl> implements BDBHAVirtualHost<BDBHAVirtualHostImpl> { - public static final String TYPE = "BDB_HA"; + public static final String VIRTUAL_HOST_TYPE = "BDB_HA"; private final BDBConfigurationStore _configurationStore; @@ -48,6 +48,12 @@ public class BDBHAVirtualHostImpl extends AbstractVirtualHost<BDBHAVirtualHostIm @ManagedAttributeField private String _remoteTransactionSynchronizationPolicy; + @ManagedAttributeField + private Long _storeUnderfullSize; + + @ManagedAttributeField + private Long _storeOverfullSize; + @ManagedObjectFactoryConstructor public BDBHAVirtualHostImpl(final Map<String, Object> attributes, VirtualHostNode<?> virtualHostNode) { @@ -140,4 +146,16 @@ public class BDBHAVirtualHostImpl extends AbstractVirtualHost<BDBHAVirtualHostIm return (ReplicatedEnvironmentFacade) _configurationStore.getEnvironmentFacade(); } + @Override + public Long getStoreUnderfullSize() + { + return _storeUnderfullSize; + } + + @Override + public Long getStoreOverfullSize() + { + return _storeOverfullSize; + } + } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java index 7c2dcc507d..335b39def3 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java @@ -1,5 +1,4 @@ /* - * * 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 @@ -16,36 +15,27 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. - * */ + package org.apache.qpid.server.virtualhost.berkeleydb; -import java.util.Map; -import org.apache.qpid.server.model.ManagedObject; -import org.apache.qpid.server.model.ManagedObjectFactoryConstructor; -import org.apache.qpid.server.model.VirtualHostNode; -import org.apache.qpid.server.store.MessageStore; -import org.apache.qpid.server.store.berkeleydb.BDBConfigurationStore; -import org.apache.qpid.server.store.berkeleydb.BDBMessageStore; -import org.apache.qpid.server.virtualhost.AbstractVirtualHost; +import org.apache.qpid.server.exchange.ExchangeImpl; +import org.apache.qpid.server.model.ManagedAttribute; +import org.apache.qpid.server.queue.AMQQueue; +import org.apache.qpid.server.virtualhost.VirtualHostImpl; -@ManagedObject(category = false, type = BDBVirtualHost.VIRTUAL_HOST_TYPE) -public class BDBVirtualHost extends AbstractVirtualHost<BDBVirtualHost> +public interface BDBVirtualHost<X extends BDBVirtualHost<X>> extends VirtualHostImpl<X, AMQQueue<?>, ExchangeImpl<?>>, org.apache.qpid.server.store.FileBasedSettings, org.apache.qpid.server.store.SizeMonitorSettings { - public static final String VIRTUAL_HOST_TYPE = "BDB"; - @ManagedObjectFactoryConstructor - public BDBVirtualHost(final Map<String, Object> attributes, - final VirtualHostNode<?> virtualHostNode) - { - super(attributes, virtualHostNode); - } + String STORE_PATH = "storePath"; + + @ManagedAttribute(mandatory = true) + String getStorePath(); + @ManagedAttribute(mandatory = true, defaultValue = "0") + Long getStoreUnderfullSize(); - @Override - protected MessageStore createMessageStore() - { - return new BDBMessageStore(); - } + @ManagedAttribute(mandatory = true, defaultValue = "0") + Long getStoreOverfullSize(); } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java new file mode 100644 index 0000000000..ad1398ae76 --- /dev/null +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java @@ -0,0 +1,78 @@ +/* + * + * 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.virtualhost.berkeleydb; + +import java.util.Map; + +import org.apache.qpid.server.model.ManagedAttributeField; +import org.apache.qpid.server.model.ManagedObject; +import org.apache.qpid.server.model.ManagedObjectFactoryConstructor; +import org.apache.qpid.server.model.VirtualHostNode; +import org.apache.qpid.server.store.MessageStore; +import org.apache.qpid.server.store.berkeleydb.BDBMessageStore; +import org.apache.qpid.server.virtualhost.AbstractVirtualHost; + +@ManagedObject(category = false, type = BDBVirtualHostImpl.VIRTUAL_HOST_TYPE) +public class BDBVirtualHostImpl extends AbstractVirtualHost<BDBVirtualHostImpl> implements BDBVirtualHost<BDBVirtualHostImpl> +{ + public static final String VIRTUAL_HOST_TYPE = "BDB"; + + @ManagedAttributeField + private String _storePath; + + @ManagedAttributeField + private Long _storeUnderfullSize; + + @ManagedAttributeField + private Long _storeOverfullSize; + + @ManagedObjectFactoryConstructor + public BDBVirtualHostImpl(final Map<String, Object> attributes, + final VirtualHostNode<?> virtualHostNode) + { + super(attributes, virtualHostNode); + } + + + @Override + protected MessageStore createMessageStore() + { + return new BDBMessageStore(); + } + + @Override + public String getStorePath() + { + return _storePath; + } + + @Override + public Long getStoreUnderfullSize() + { + return _storeUnderfullSize; + } + + @Override + public Long getStoreOverfullSize() + { + return _storeOverfullSize; + } +} diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java index fbf3041054..5e738e7701 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java @@ -24,8 +24,9 @@ import java.util.Map; import org.apache.qpid.server.model.DerivedAttribute; import org.apache.qpid.server.model.ManagedAttribute; +import org.apache.qpid.server.store.berkeleydb.HASettings; -public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends BDBVirtualHostNode<X> +public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends BDBVirtualHostNode<X>, HASettings { public static final String GROUP_NAME = "groupName"; public static final String ADDRESS = "address"; @@ -35,7 +36,6 @@ public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends public static final String PRIORITY = "priority"; public static final String QUORUM_OVERRIDE = "quorumOverride"; public static final String ROLE = "role"; - public static final String REPLICATED_ENVIRONMENT_CONFIGURATION = "replicatedEnvironmentConfiguration"; public static final String LAST_KNOWN_REPLICATION_TRANSACTION_ID = "lastKnownReplicationTransactionId"; public static final String JOIN_TIME = "joinTime"; @@ -60,9 +60,6 @@ public interface BDBHAVirtualHostNode<X extends BDBHAVirtualHostNode<X>> extends @ManagedAttribute(persist = false) String getRole(); - @ManagedAttribute - Map<String, String> getReplicatedEnvironmentConfiguration(); - @DerivedAttribute Long getLastKnownReplicationTransactionId(); 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 74d273a660..cf1cea3efa 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 @@ -107,10 +107,6 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu @ManagedAttributeField(afterSet="postSetRole") private String _role; - @ManagedAttributeField - private Map<String, String> _replicatedEnvironmentConfiguration; - - @ManagedObjectFactoryConstructor public BDBHAVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?> broker) { @@ -206,12 +202,6 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu return -1L; } - @Override - public Map<String, String> getReplicatedEnvironmentConfiguration() - { - return _replicatedEnvironmentConfiguration; - } - @SuppressWarnings("rawtypes") @Override public Collection<? extends RemoteReplicationNode> getRemoteReplicationNodes() @@ -264,9 +254,7 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu LOGGER.debug("Activating virtualhost node " + this); } - Map<String, Object> attributes = buildAttributesForStore(); - - getConfigurationStore().openConfigurationStore(this, attributes); + getConfigurationStore().openConfigurationStore(this); getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.CREATED()); getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(getStorePath())); 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 65a2fc1d30..763b59146b 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 @@ -20,11 +20,12 @@ */ package org.apache.qpid.server.virtualhostnode.berkeleydb; -import java.util.Map; - import org.apache.qpid.server.model.ManagedAttribute; -import org.apache.qpid.server.virtualhostnode.FileBasedVirtualHostNode; -public interface BDBVirtualHostNode<X extends BDBVirtualHostNode<X>> extends FileBasedVirtualHostNode<X> +public interface BDBVirtualHostNode<X extends BDBVirtualHostNode<X>> extends org.apache.qpid.server.model.VirtualHostNode<X>, org.apache.qpid.server.store.FileBasedSettings { + String STORE_PATH = "storePath"; + + @ManagedAttribute(mandatory = true) + String getStorePath(); } 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 d37c626b57..27a2177b80 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 @@ -22,6 +22,7 @@ package org.apache.qpid.server.virtualhostnode.berkeleydb; import java.util.Map; +import org.apache.qpid.server.logging.messages.ConfigStoreMessages; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ManagedAttributeField; import org.apache.qpid.server.model.ManagedObject; @@ -45,6 +46,12 @@ public class BDBVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<BDBV } @Override + protected void writeLocationEventLog() + { + getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.STORE_LOCATION(getStorePath())); + } + + @Override protected DurableConfigurationStore createConfigurationStore() { return new BDBConfigurationStore(); diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java index 8657a3a0b1..e4e7286e5a 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java @@ -20,12 +20,26 @@ */ package org.apache.qpid.server.store.berkeleydb; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.store.AbstractDurableConfigurationStoreTestCase; import org.apache.qpid.server.store.DurableConfigurationStore; +import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBVirtualHostNode; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class BDBMessageStoreConfigurationTest extends AbstractDurableConfigurationStoreTestCase { @Override + protected VirtualHostNode createVirtualHostNode(String storeLocation, ConfiguredObjectFactory factory) + { + final BDBVirtualHostNode parent = mock(BDBVirtualHostNode.class); + when(parent.getStorePath()).thenReturn(storeLocation); + return parent; + } + + @Override protected DurableConfigurationStore createConfigStore() throws Exception { return new BDBConfigurationStore(); 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 65fc0e9168..847f857491 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 @@ -21,17 +21,17 @@ package org.apache.qpid.server.store.berkeleydb; import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import org.apache.log4j.Logger; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreQuotaEventsTestBase; +import org.apache.qpid.server.virtualhost.berkeleydb.BDBVirtualHost; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class BDBMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestBase { - private static final Logger _logger = Logger.getLogger(BDBMessageStoreQuotaEventsTest.class); - /* * Notes on calculation of quota limits. * @@ -47,8 +47,8 @@ public class BDBMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestB private static final int NUMBER_OF_MESSAGES_TO_OVERFILL_STORE = 150; - private static final int OVERFULL_SIZE = 4000000; // ~4MB - private static final int UNDERFULL_SIZE = 3500000; // ~3.5MB + private static final long OVERFULL_SIZE = 4000000; // ~4MB + private static final long UNDERFULL_SIZE = 3500000; // ~3.5MB @Override protected int getNumberOfMessagesToFillStore() @@ -56,24 +56,17 @@ public class BDBMessageStoreQuotaEventsTest extends MessageStoreQuotaEventsTestB return NUMBER_OF_MESSAGES_TO_OVERFILL_STORE; } - @Override - protected Map<String, Object>createStoreSettings(String storeLocation) + protected VirtualHost createVirtualHost(String storeLocation) { - _logger.debug("Applying store specific config. overfull-size=" + OVERFULL_SIZE + ", underfull-size=" + UNDERFULL_SIZE); - - Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); - messageStoreSettings.put(MessageStore.STORE_PATH, storeLocation); - messageStoreSettings.put(MessageStore.OVERFULL_SIZE, OVERFULL_SIZE); - messageStoreSettings.put(MessageStore.UNDERFULL_SIZE, UNDERFULL_SIZE); - return messageStoreSettings; + final BDBVirtualHost parent = mock(BDBVirtualHost.class); + when(parent.getContext()).thenReturn(Collections.singletonMap("je.log.fileMax", MAX_BDB_LOG_SIZE)); + when(parent.getStorePath()).thenReturn(storeLocation); + when(parent.getStoreOverfullSize()).thenReturn(OVERFULL_SIZE); + when(parent.getStoreUnderfullSize()).thenReturn(UNDERFULL_SIZE); + return parent; } - @Override - protected Map<String, String> createContextSettings() - { - return Collections.singletonMap("je.log.fileMax", MAX_BDB_LOG_SIZE); - } @Override protected MessageStore createStore() throws Exception diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java index e40c6213cf..a96dc8b142 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java @@ -23,8 +23,6 @@ package org.apache.qpid.server.store.berkeleydb; import java.io.File; import java.nio.ByteBuffer; import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.BasicContentHeaderProperties; @@ -32,6 +30,7 @@ import org.apache.qpid.framing.ContentHeaderBody; import org.apache.qpid.framing.MethodRegistry; import org.apache.qpid.framing.ProtocolVersion; import org.apache.qpid.framing.abstraction.MessagePublishInfo; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.protocol.v0_10.MessageMetaDataType_0_10; import org.apache.qpid.server.protocol.v0_10.MessageMetaData_0_10; import org.apache.qpid.server.protocol.v0_8.MessageMetaData; @@ -41,6 +40,7 @@ import org.apache.qpid.server.store.MessageStoreTestCase; import org.apache.qpid.server.store.StorableMessageMetaData; import org.apache.qpid.server.store.StoreException; import org.apache.qpid.server.store.StoredMessage; +import org.apache.qpid.server.virtualhost.berkeleydb.BDBVirtualHost; import org.apache.qpid.transport.DeliveryProperties; import org.apache.qpid.transport.Header; import org.apache.qpid.transport.MessageAcceptMode; @@ -50,7 +50,9 @@ import org.apache.qpid.transport.MessageDeliveryPriority; import org.apache.qpid.transport.MessageProperties; import org.apache.qpid.transport.MessageTransfer; import org.apache.qpid.util.FileUtils; -import org.apache.qpid.server.store.berkeleydb.BDBMessageStore; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** * Subclass of MessageStoreTestCase which runs the standard tests from the superclass against @@ -406,14 +408,14 @@ public class BDBMessageStoreTest extends MessageStoreTestCase @Override - protected Map<String, Object> getStoreSettings() throws Exception + protected VirtualHost createVirtualHost() { _storeLocation = TMP_FOLDER + File.separator + getTestName(); deleteStoreIfExists(); - Map<String, Object> messageStoreSettings = new HashMap<String, Object>(); - messageStoreSettings.put(MessageStore.STORE_PATH, _storeLocation); - return messageStoreSettings; + final BDBVirtualHost parent = mock(BDBVirtualHost.class); + when(parent.getStorePath()).thenReturn(_storeLocation); + return parent; } private void deleteStoreIfExists() |
