You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2012/07/06 16:01:28 UTC
svn commit: r1358217 - in /qpid/trunk/qpid/java:
bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/
broker/src/main/java/org/apache/qpid/server/model/adapter/
broker/src/main/java/org/apache/qpid/server/virtualhost/
Author: kwall
Date: Fri Jul 6 14:01:27 2012
New Revision: 1358217
URL: http://svn.apache.org/viewvc?rev=1358217&view=rev
Log:
QPID-4093: [Java Broker] Prevent new queues and exchanges from being created on vhosts that are not active
Modified:
qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
Modified: qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java?rev=1358217&r1=1358216&r2=1358217&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java Fri Jul 6 14:01:27 2012
@@ -35,7 +35,9 @@ import javax.management.openmbean.Tabula
import org.apache.log4j.Logger;
import org.apache.qpid.jms.ConnectionURL;
+import org.apache.qpid.management.common.mbeans.ManagedBroker;
import org.apache.qpid.server.store.berkeleydb.jmx.ManagedBDBHAMessageStore;
+import org.apache.qpid.server.virtualhost.ManagedVirtualHost;
import org.apache.qpid.test.utils.JMXTestUtils;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
@@ -221,11 +223,47 @@ public class HAClusterManagementTest ext
}
}
- private ManagedBDBHAMessageStore getStoreBeanForNodeAtBrokerPort(
- final int activeBrokerPortNumber) throws Exception
+ public void testVirtualHostOperationsDeniedForNonMasterNode() throws Exception
{
- _jmxUtils.open(activeBrokerPortNumber);
+ final Connection activeConnection = getConnection(_brokerFailoverUrl);
+ final int inactiveBrokerPortNumber = _clusterCreator.getPortNumberOfAnInactiveBroker(activeConnection);
+
+ ManagedBroker inactiveBroker = getManagedBrokerBeanForNodeAtBrokerPort(inactiveBrokerPortNumber);
+
+ try
+ {
+ inactiveBroker.createNewQueue(getTestQueueName(), null, true);
+ fail("Exception not thrown");
+ }
+ catch (Exception e)
+ {
+ String message = e.getMessage();
+ assertEquals(message, "The virtual hosts state of INITIALISING does not permit this operation.");
+ }
+
+ try
+ {
+ inactiveBroker.createNewExchange(getName(), "direct", true);
+ fail("Exception not thrown");
+ }
+ catch (Exception e)
+ {
+ String message = e.getMessage();
+ assertEquals(message, "The virtual hosts state of INITIALISING does not permit this operation.");
+ }
+ }
+
+ private ManagedBDBHAMessageStore getStoreBeanForNodeAtBrokerPort(final int brokerPortNumber) throws Exception
+ {
+ _jmxUtils.open(brokerPortNumber);
return _jmxUtils.getManagedObject(ManagedBDBHAMessageStore.class, MANAGED_OBJECT_QUERY);
}
+
+ private ManagedBroker getManagedBrokerBeanForNodeAtBrokerPort(final int brokerPortNumber) throws Exception
+ {
+ _jmxUtils.open(brokerPortNumber);
+
+ return _jmxUtils.getManagedBroker(VIRTUAL_HOST);
+ }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java?rev=1358217&r1=1358216&r2=1358217&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java Fri Jul 6 14:01:27 2012
@@ -214,7 +214,6 @@ final class VirtualHostAdapter extends A
return createExchange(name, state, durable, lifetime, ttl, type, attributes);
}
-
public Exchange createExchange(final String name,
final State initialState,
final boolean durable,
@@ -224,6 +223,8 @@ final class VirtualHostAdapter extends A
final Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException
{
+ checkVHostStateIsActive();
+
try
{
org.apache.qpid.server.exchange.Exchange exchange =
@@ -285,6 +286,8 @@ final class VirtualHostAdapter extends A
final Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException
{
+ checkVHostStateIsActive();
+
String owner = null;
if(exclusive)
{
@@ -797,6 +800,16 @@ final class VirtualHostAdapter extends A
return AVAILABLE_ATTRIBUTES;
}
+ private void checkVHostStateIsActive()
+ {
+ if (!org.apache.qpid.server.virtualhost.State.ACTIVE.equals(_virtualHost.getState()))
+ {
+ throw new IllegalStateException("The virtual hosts state of " + _virtualHost.getState()
+ + " does not permit this operation.");
+ }
+ }
+
+
private static class VirtualHostStatisticsAdapter extends StatisticsAdapter
{
private final org.apache.qpid.server.virtualhost.VirtualHost _vhost;
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java?rev=1358217&r1=1358216&r2=1358217&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java Fri Jul 6 14:01:27 2012
@@ -753,15 +753,6 @@ public class VirtualHostImpl implements
try
{
initialiseHouseKeeping(_vhostConfig.getHousekeepingCheckPeriod());
-//TODO: implement state changing for the VirtualHost MBean instead of registering and unregistering
-// try
-// {
-// _brokerMBean.register();
-// }
-// catch (JMException e)
-// {
-// throw new RuntimeException("Failed to register virtual host mbean for virtual host " + getName(), e);
-// }
finalState = State.ACTIVE;
}
finally
@@ -787,8 +778,6 @@ public class VirtualHostImpl implements
*/
_connectionRegistry.close(IConnectionRegistry.VHOST_PASSIVATE_REPLY_TEXT);
-//TODO: implement state changing for the VirtualHost MBean instead of registering and unregistering
-// _brokerMBean.unregister();
removeHouseKeepingTasks();
_queueRegistry.stopAllAndUnregisterMBeans();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org