curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rohit Agarwal (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CURATOR-338) SessionFailRetryLoop doesn't work correctly
Date Thu, 04 Aug 2016 12:35:20 GMT
Rohit Agarwal created CURATOR-338:
-------------------------------------

             Summary: SessionFailRetryLoop doesn't work correctly
                 Key: CURATOR-338
                 URL: https://issues.apache.org/jira/browse/CURATOR-338
             Project: Apache Curator
          Issue Type: Bug
    Affects Versions: 2.11.0
            Reporter: Rohit Agarwal
            Assignee: Jordan Zimmerman


According to the documentation at https://curator.apache.org/apidocs/org/apache/curator/SessionFailRetryLoop.html
the canonical usage of {{SessionFailRetryLoop}} is:
{code}
 SessionFailRetryLoop    retryLoop = client.newSessionFailRetryLoop(mode);
 retryLoop.start();
 try
 {
     while ( retryLoop.shouldContinue() )
     {
         try
         {
             // do work
         }
         catch ( Exception e )
         {
             retryLoop.takeException(e);
         }
     }
 }
 finally
 {
     retryLoop.close();
 }
{code}

Let's say there is an exception which can be retried (i.e. it's not session expiry.) However,
it will never be retried.

This is because when the first time you call {{shouldContinue()}} for the first time, {{isDone}}
is set to true (https://github.com/apache/curator/blob/apache-curator-2.11.0/curator-client/src/main/java/org/apache/curator/SessionFailRetryLoop.java#L204)
So, the next time {{shouldContinue()}} will return false, unless {{isDone}} is set to {{false}}
in the interim. However, {{isDone}} is only updated when the session has expired and the mode
is retry https://github.com/apache/curator/blob/apache-curator-2.11.0/curator-client/src/main/java/org/apache/curator/SessionFailRetryLoop.java#L241



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message