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

Reply via email to