Github user tillrohrmann commented on a diff in the pull request:
https://github.com/apache/flink/pull/6154#discussion_r195359921
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/highavailability/nonha/embedded/EmbeddedLeaderService.java
---
@@ -356,8 +357,8 @@ public void confirmLeaderSessionID(UUID
leaderSessionID) {
}
@Override
- public boolean hasLeadership() {
- return isLeader;
+ public boolean hasLeadership(@Nonnull UUID leaderSessionId) {
+ return isLeader &&
leaderSessionId.equals(currentLeaderSessionId);
}
--- End diff --
In the case of the `EmbeddedLeaderService`, there is no case in which
`leaderSessionId != currentLeaderSessionId` if `isLeader`, because a leader
only loses leadership if the service is stopped. But this is an implementation
detail which might change in the future and thus, should be guarded.
I think we don't need a lock but have to make `currentLeaderSessionId`
`volatile` such that we see modifications.
---