summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore/src
diff options
context:
space:
mode:
authorAndrew MacBean <macbean@apache.org>2014-06-26 11:19:54 +0000
committerAndrew MacBean <macbean@apache.org>2014-06-26 11:19:54 +0000
commit8a1190a3bc398233b3cb9a295add11eef0f3cec4 (patch)
tree15ecfb671967401f81b9dce15e46aa9f1a33489c /qpid/java/bdbstore/src
parent4ad072fd1cca374bcf36292bcf83aba74f18f08c (diff)
downloadqpid-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')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java21
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java18
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacadeFactory.java3
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/HASettings.java37
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java9
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java22
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHost.java9
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHost.java10
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAVirtualHostImpl.java22
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHost.java38
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBVirtualHostImpl.java78
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNode.java7
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java14
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNode.java9
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java7
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreConfigurationTest.java14
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreQuotaEventsTest.java35
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java16
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()