Github user nkalmar commented on a diff in the pull request:
https://github.com/apache/zookeeper/pull/724#discussion_r238194209
--- Diff:
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java
---
@@ -1162,10 +1162,12 @@ public void run() {
};
try {
roZkMgr.start();
- reconfigFlagClear();
- if (shuttingDownLE) {
- shuttingDownLE = false;
- startLeaderElection();
+ synchronized (this) {
+ reconfigFlagClear();
+ if (shuttingDownLE) {
--- End diff --
Wouldn't it make more sense to make shuttingDownLE AtomicBoolean and use
compareAndSet() here? The two methods (reconfigFlagClear and
startLeaderElection) is already synchronized anyway, and only synchronized
blocks access shuttingDownLE.
What do you think?
---