Github user cammckenzie commented on a diff in the pull request:
https://github.com/apache/curator/pull/66#discussion_r24375761
--- Diff:
curator-recipes/src/main/java/org/apache/curator/framework/recipes/locks/Reaper.java
---
@@ -333,7 +355,20 @@ public void notLeader()
reapingIsActive.set(false);
}
};
- localLeaderLatch.addListener(listener);
- return localLeaderLatch;
+ leaderLatch.addListener(listener);
+
+ reapingIsActive.set(leaderLatch.hasLeadership());
--- End diff --
Another potential race condition here? If the Reaper gets passed a
LeaderLatch in its constructor that has already undergone election (and been
elected leader) then the isLeader() method on the listener will not fire until
another election occurs. While the reapiningIsActive flag will be set to true,
the schedule() method will not get called so no reaping will actually occur?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---