You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Rohit Agarwal (JIRA)" <ji...@apache.org> on 2016/08/04 12:35:20 UTC
[jira] [Created] (CURATOR-338) SessionFailRetryLoop doesn't work
correctly
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)