I'd have to question what the point of the class is then as it is it is basically a much more complicated version of 'NoFailover'.
It should at least allow failover to occur once. If not once per successfull connection Martin 2009/6/24 Rajith Attapattu <rajit...@gmail.com>: > Martin, > > When we discussed this issue we agreed that by default the > SingleFailoverMethod should not retry at all. > So in order to make the initial connection attempt work, we made > AMQConnection use getCurrentBrokerDetails() instead of the > getNextBrokerDetails() to get the initial broker to connect. > > Regards, > > Rajith > > On Wed, Jun 24, 2009 at 11:27 AM, Martin Ritchie<ritch...@apache.org> wrote: >> Hi Rajith, >> >> Why did you set the default retries to 0 as well as starting the >> _currentRetries from 0? I thought the original problem was that it >> would always try twice with this commit we effectively reduced the >> retries by 2. Do you have time to write a test to ensure that >> FailoverSingleServer only retires once not twice :) >> >>> /** The default number of times to rety a conection to this server */ >>> - public static final int DEFAULT_SERVER_RETRIES = 1; >>> + public static final int DEFAULT_SERVER_RETRIES = 0; >> >> This commit has resulted in the SingleServerFailover not working. >> >> When I make my connection failover I get : >> >> main 2009-06-24 16:21:45,105 DEBUG >> [qpid.client.protocol.AMQProtocolHandler] Session closed called with >> failover state currently FailoverState: NOT STARTED >> main 2009-06-24 16:21:45,105 DEBUG [apache.qpid.jms.FailoverPolicy] >> All failover methods exhausted >> main 2009-06-24 16:21:45,106 DEBUG >> [qpid.client.protocol.AMQProtocolHandler] Failover not allowed by >> policy. >> main 2009-06-24 16:21:45,106 DEBUG [apache.qpid.jms.FailoverPolicy] >> All failover methods exhausted >> main 2009-06-24 16:21:45,106 DEBUG >> [qpid.client.protocol.AMQProtocolHandler] Failover Policy: >> Failover not allowed >> Failover policy methods >>>Single Server: >> Max Retries:0 >> Current Retry:0 >> tcp://localhost:5672 >> >> As the current retry is 0 and the Max is 0 then failover doesn't occur. >> >> Am I missing something? >> >> Cheers >> >> Martin >> >> 2009/5/14 <raj...@apache.org>: >>> Author: rajith >>> Date: Thu May 14 19:50:23 2009 >>> New Revision: 774899 >>> >>> URL: http://svn.apache.org/viewvc?rev=774899&view=rev >>> Log: >>> This is a fix for QPID-1859 >>> For FailoverSingleServer the default for retries is set to 0 and the >>> current_retries start from 0 instead of -1. >>> For FailoverRoundRobinServers the current_broker_index now starts from 0 >>> instead of -1. >>> The AMQConnection now uses the getCurrentBrokerDetails() instead of the >>> getNextBrokerDetails() to get the initial broker to connect. >>> >>> Modified: >>> >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java >>> >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java >>> >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverSingleServer.java >>> >>> Modified: >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java >>> URL: >>> http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java?rev=774899&r1=774898&r2=774899&view=diff >>> ============================================================================== >>> --- >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java >>> (original) >>> +++ >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java >>> Thu May 14 19:50:23 2009 >>> @@ -455,7 +455,7 @@ >>> } >>> >>> _failoverPolicy = new FailoverPolicy(connectionURL, this); >>> - BrokerDetails brokerDetails = >>> _failoverPolicy.getNextBrokerDetails(); >>> + BrokerDetails brokerDetails = >>> _failoverPolicy.getCurrentBrokerDetails(); >>> if (brokerDetails.getTransport().equals(BrokerDetails.VM)) >>> { >>> _delegate = new AMQConnectionDelegate_8_0(this); >>> >>> Modified: >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java >>> URL: >>> http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java?rev=774899&r1=774898&r2=774899&view=diff >>> ============================================================================== >>> --- >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java >>> (original) >>> +++ >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java >>> Thu May 14 19:50:23 2009 >>> @@ -35,19 +35,19 @@ >>> public static final int DEFAULT_SERVER_RETRIES = 0; >>> >>> /** The index into the hostDetails array of the broker to which we are >>> connected */ >>> - private int _currentBrokerIndex = -1; >>> + private int _currentBrokerIndex = 0; >>> >>> /** The number of times to retry connecting for each server */ >>> private int _serverRetries; >>> >>> /** The current number of retry attempts made */ >>> - private int _currentServerRetry; >>> + private int _currentServerRetry = 0; >>> >>> /** The number of times to cycle through the servers */ >>> private int _cycleRetries; >>> >>> /** The current number of cycles performed. */ >>> - private int _currentCycleRetries; >>> + private int _currentCycleRetries = 0; >>> >>> /** Array of BrokerDetail used to make connections. */ >>> protected ConnectionURL _connectionDetails; >>> @@ -62,7 +62,7 @@ >>> _connectionDetails = connectionDetails; >>> >>> // There is no current broker at startup so set it to -1. >>> - _currentBrokerIndex = -1; >>> + _currentBrokerIndex = 0; >>> >>> String cycleRetries = >>> _connectionDetails.getFailoverOption(ConnectionURL.OPTIONS_FAILOVER_CYCLE); >>> >>> @@ -83,18 +83,21 @@ >>> _currentCycleRetries = 0; >>> >>> _serverRetries = 0; >>> - _currentServerRetry = -1; >>> + _currentServerRetry = 0; >>> } >>> >>> public void reset() >>> { >>> _currentBrokerIndex = 0; >>> _currentCycleRetries = 0; >>> - _currentServerRetry = -1; >>> + _currentServerRetry = 0; >>> } >>> >>> public boolean failoverAllowed() >>> { >>> + System.out.println("===================================="); >>> + System.out.println(toString()); >>> + System.out.println("===================================="); >>> return ((_currentCycleRetries < _cycleRetries) || >>> (_currentServerRetry < _serverRetries)); >>> //|| (_currentBrokerIndex <= >>> (_connectionDetails.getBrokerCount() - 1))); >>> } >>> @@ -102,16 +105,11 @@ >>> public void attainedConnection() >>> { >>> _currentCycleRetries = 0; >>> - _currentServerRetry = -1; >>> + _currentServerRetry = 0; >>> } >>> >>> public BrokerDetails getCurrentBrokerDetails() >>> { >>> - if (_currentBrokerIndex == -1) >>> - { >>> - return null; >>> - } >>> - >>> return _connectionDetails.getBrokerDetails(_currentBrokerIndex); >>> } >>> >>> @@ -123,20 +121,8 @@ >>> { >>> if (_currentServerRetry < _serverRetries) >>> { >>> - if (_currentBrokerIndex == -1) >>> - { >>> - _currentBrokerIndex = 0; >>> - >>> - >>> setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> - >>> - _logger.info("First run using " + >>> _connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> - } >>> - else >>> - { >>> - _logger.info("Retrying " + >>> _connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> - doDelay=true; >>> - } >>> - >>> + _logger.info("Trying " + >>> _connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> + doDelay= _currentBrokerIndex != 0; >>> _currentServerRetry++; >>> } >>> else >>> @@ -156,19 +142,8 @@ >>> { >>> if (_currentServerRetry < _serverRetries) >>> { >>> - if (_currentBrokerIndex == -1) >>> - { >>> - _currentBrokerIndex = 0; >>> - >>> - >>> setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> - >>> - _logger.info("First run using " + >>> _connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> - } >>> - else >>> - { >>> - _logger.info("Retrying " + >>> _connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> - doDelay=true; >>> - } >>> + _logger.info("Trying " + >>> _connectionDetails.getBrokerDetails(_currentBrokerIndex)); >>> + doDelay= _currentBrokerIndex != 0; >>> >>> _currentServerRetry++; >>> } >>> @@ -227,7 +202,7 @@ >>> } >>> } >>> >>> - _currentServerRetry = -1; >>> + _currentServerRetry = 0; >>> _currentBrokerIndex = index; >>> } >>> >>> >>> Modified: >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverSingleServer.java >>> URL: >>> http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverSingleServer.java?rev=774899&r1=774898&r2=774899&view=diff >>> ============================================================================== >>> --- >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverSingleServer.java >>> (original) >>> +++ >>> qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverSingleServer.java >>> Thu May 14 19:50:23 2009 >>> @@ -30,7 +30,7 @@ >>> private static final Logger _logger = >>> LoggerFactory.getLogger(FailoverSingleServer.class); >>> >>> /** The default number of times to rety a conection to this server */ >>> - public static final int DEFAULT_SERVER_RETRIES = 1; >>> + public static final int DEFAULT_SERVER_RETRIES = 0; >>> >>> /** The details of the Single Server */ >>> private BrokerDetails _brokerDetail; >>> @@ -39,7 +39,7 @@ >>> protected int _retries; >>> >>> /** The current number of attempts made to the server */ >>> - protected int _currentRetries; >>> + protected int _currentRetries = 0; >>> >>> >>> public FailoverSingleServer(ConnectionURL connectionDetails) >>> @@ -61,7 +61,7 @@ >>> >>> public void reset() >>> { >>> - _currentRetries = -1; >>> + _currentRetries = 0; >>> } >>> >>> public boolean failoverAllowed() >>> >>> >>> >>> --------------------------------------------------------------------- >>> Apache Qpid - AMQP Messaging Implementation >>> Project: http://qpid.apache.org >>> Use/Interact: mailto:commits-subscr...@qpid.apache.org >>> >>> >> >> >> >> -- >> Martin Ritchie >> >> --------------------------------------------------------------------- >> Apache Qpid - AMQP Messaging Implementation >> Project: http://qpid.apache.org >> Use/Interact: mailto:dev-subscr...@qpid.apache.org >> >> > > > > -- > Regards, > > Rajith Attapattu > Red Hat > http://rajith.2rlabs.com/ > > --------------------------------------------------------------------- > Apache Qpid - AMQP Messaging Implementation > Project: http://qpid.apache.org > Use/Interact: mailto:dev-subscr...@qpid.apache.org > > -- Martin Ritchie --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:dev-subscr...@qpid.apache.org