This closes #35 Replication issues over killed nodes

This commit is contained in:
Clebert Suconic 2015-06-17 13:30:42 -04:00
commit 61bd181499
1 changed files with 12 additions and 2 deletions

View File

@ -22,17 +22,18 @@ import java.util.concurrent.TimeUnit;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQExceptionType; import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
import org.apache.activemq.artemis.api.core.client.SessionFailureListener;
import org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryInternal; import org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryInternal;
import org.apache.activemq.artemis.core.client.impl.Topology; import org.apache.activemq.artemis.core.client.impl.Topology;
import org.apache.activemq.artemis.core.persistence.StorageManager; import org.apache.activemq.artemis.core.persistence.StorageManager;
import org.apache.activemq.artemis.core.protocol.core.CoreRemotingConnection; import org.apache.activemq.artemis.core.protocol.core.CoreRemotingConnection;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ReplicationLiveIsStoppingMessage; import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ReplicationLiveIsStoppingMessage;
import org.apache.activemq.artemis.core.remoting.FailureListener;
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger; import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
import org.apache.activemq.artemis.core.server.NodeManager; import org.apache.activemq.artemis.core.server.NodeManager;
public class SharedNothingBackupQuorum implements Quorum, FailureListener public class SharedNothingBackupQuorum implements Quorum, SessionFailureListener
{ {
public enum BACKUP_ACTIVATION public enum BACKUP_ACTIVATION
{ {
FAIL_OVER, FAILURE_REPLICATING, ALREADY_REPLICATING, STOP; FAIL_OVER, FAILURE_REPLICATING, ALREADY_REPLICATING, STOP;
@ -167,6 +168,13 @@ public class SharedNothingBackupQuorum implements Quorum, FailureListener
connectionFailed(me, failedOver); connectionFailed(me, failedOver);
} }
@Override
public void beforeReconnect(ActiveMQException exception)
{
//noop
}
@Override @Override
public void close() public void close()
{ {
@ -182,6 +190,8 @@ public class SharedNothingBackupQuorum implements Quorum, FailureListener
this.sessionFactory = sessionFactory; this.sessionFactory = sessionFactory;
this.connection = (CoreRemotingConnection)sessionFactory.getConnection(); this.connection = (CoreRemotingConnection)sessionFactory.getConnection();
connection.addFailureListener(this); connection.addFailureListener(this);
//belts and braces, there are circumstances where the connection listener doesn't get called but the session does.
sessionFactory.addFailureListener(this);
} }
/** /**