Author: kwall
Date: Tue Jul 8 21:40:01 2014
New Revision: 1608956
URL: http://svn.apache.org/r1608956
Log:
QPID-5885: [Java Broker] Virtualhostnode to replace real virtualhost with
replica virtualhost in the event that the BDB HA goes into detached state
Modified:
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
Modified:
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java?rev=1608956&r1=1608955&r2=1608956&view=diff
==============================================================================
---
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
(original)
+++
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
Tue Jul 8 21:40:01 2014
@@ -846,23 +846,6 @@ public class ReplicatedEnvironmentFacade
{
try
{
- if (environment.isValid())
- {
- environment.setStateChangeListener(new
StateChangeListener()
- {
- @Override
- public void stateChange(StateChangeEvent
stateChangeEvent) throws RuntimeException
- {
- if (LOGGER.isDebugEnabled())
- {
- LOGGER.debug(
- "When restarting a state change event
is received on NOOP listener for state:"
- + stateChangeEvent.getState());
- }
- }
- });
- }
-
try
{
closeSequences();
Modified:
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1608956&r1=1608955&r2=1608956&view=diff
==============================================================================
---
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
(original)
+++
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
Tue Jul 8 21:40:01 2014
@@ -46,7 +46,6 @@ import com.sleepycat.je.rep.utilint.Host
import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.updater.Task;
-import org.apache.qpid.server.configuration.updater.VoidTask;
import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
@@ -104,6 +103,7 @@ public class BDBHAVirtualHostNodeImpl ex
@ManagedAttributeField(afterSet="postSetPriority")
private int _priority;
+
@ManagedAttributeField(afterSet="postSetQuorumOverride")
private int _quorumOverride;
@@ -426,11 +426,22 @@ public class BDBHAVirtualHostNodeImpl ex
private void onReplica()
{
+ createReplicaVirtualHost();
+ }
+
+
+ private void onDetached()
+ {
+ createReplicaVirtualHost();
+ }
+
+ private void createReplicaVirtualHost()
+ {
try
{
closeVirtualHostIfExist();
- Map<String, Object> hostAttributes = new HashMap<String, Object>();
+ Map<String, Object> hostAttributes = new HashMap<>();
hostAttributes.put(VirtualHost.MODEL_VERSION,
BrokerModel.MODEL_VERSION);
hostAttributes.put(VirtualHost.NAME, getGroupName());
hostAttributes.put(VirtualHost.TYPE, "BDB_HA_REPLICA");
@@ -442,11 +453,6 @@ public class BDBHAVirtualHostNodeImpl ex
}
}
- private void onDetached()
- {
- closeVirtualHostIfExist();
- }
-
protected void closeVirtualHostIfExist()
{
VirtualHost<?,?,?> virtualHost = getVirtualHost();
@@ -478,11 +484,9 @@ public class BDBHAVirtualHostNodeImpl ex
onReplica();
break;
case DETACHED:
- LOGGER.error("BDB replicated node in detached state, therefore
passivating.");
onDetached();
break;
case UNKNOWN:
- LOGGER.warn("BDB replicated node in unknown state (hopefully
temporarily)");
break;
default:
LOGGER.error("Unexpected state change: " + state);
Modified:
qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java?rev=1608956&r1=1608955&r2=1608956&view=diff
==============================================================================
---
qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java
(original)
+++
qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java
Tue Jul 8 21:40:01 2014
@@ -22,11 +22,7 @@ package org.apache.qpid.server.store.ber
import java.io.File;
import javax.jms.Connection;
-import javax.jms.Destination;
import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.Session;
import javax.management.ObjectName;
import org.apache.qpid.jms.ConnectionURL;
@@ -36,8 +32,6 @@ import org.apache.qpid.test.utils.QpidBr
public class HAClusterTwoNodeTest extends QpidBrokerTestCase
{
- private static final long RECEIVE_TIMEOUT = 5000l;
-
private static final String VIRTUAL_HOST = "test";
private static final String MANAGED_OBJECT_QUERY =
"org.apache.qpid:type=BDBHAMessageStore,name=" + ObjectName.quote(VIRTUAL_HOST);
@@ -123,20 +117,22 @@ public class HAClusterTwoNodeTest extend
assertProducingConsuming(connection);
}
- public void
testPersistentOperationsFailOnNonDesignatedPrimarysAfterSecondaryStopped()
throws Exception
+ public void
testPersistentOperationsFailOnNonDesignatedPrimaryAfterSecondaryStopped()
throws Exception
{
startCluster(false);
_clusterCreator.stopNode(_clusterCreator.getBrokerPortNumberOfSecondaryNode());
- final Connection connection = getConnection(_brokerFailoverUrl);
- assertNotNull("Expected to get a valid connection to primary",
connection);
+
try
{
+ Connection connection = getConnection(_brokerFailoverUrl);
assertProducingConsuming(connection);
- fail("JMS peristent operations succeded on Master 'not designated
primary' buy they should fail as replica is not available");
+ fail("Exception not thrown");
}
catch(JMSException e)
{
- // JMSException should be thrown on transaction start/commit
+ // JMSException should be thrown either on getConnection, or
produce/consume
+ // depending on whether the relative timing of the node
discovering that the
+ // secondary has gone.
}
}
@@ -166,7 +162,7 @@ public class HAClusterTwoNodeTest extend
assertFalse("Expected secondary node to NOT be set as designated
primary", secondaryStoreBean.getDesignatedPrimary());
}
- public void testSecondaryDesignatedAsPrimaryAfterOrginalPrimaryStopped()
throws Exception
+ public void testSecondaryDesignatedAsPrimaryAfterOriginalPrimaryStopped()
throws Exception
{
startCluster(true);
final ManagedBDBHAMessageStore storeBean =
getStoreBeanForNodeAtBrokerPort(_clusterCreator.getBrokerPortNumberOfSecondaryNode());
Modified:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java?rev=1608956&r1=1608955&r2=1608956&view=diff
==============================================================================
---
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
(original)
+++
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
Tue Jul 8 21:40:01 2014
@@ -1052,7 +1052,6 @@ public class QpidBrokerTestCase extends
*/
public InitialContext getInitialContext() throws NamingException
{
- _logger.info("get InitialContext");
if (_initialContext == null)
{
_initialContext = new InitialContext();
@@ -1070,7 +1069,6 @@ public class QpidBrokerTestCase extends
*/
public AMQConnectionFactory getConnectionFactory() throws NamingException
{
- _logger.info("get ConnectionFactory");
if (_connectionFactory == null)
{
if (Boolean.getBoolean(PROFILE_USE_SSL))
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]