Skip to content
This repository has been archived by the owner on May 14, 2022. It is now read-only.

Commit

Permalink
Properly filter out the latest leader in the ClusterMembership set (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
tbak committed Apr 12, 2022
1 parent 82f977f commit a8fbdd3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -179,19 +179,24 @@ private ClusterMembershipSnapshot buildSnapshot() {
builder.withMemberRevisions(recentRevisions);

// Find leader
Optional<ClusterMembershipRevision<ClusterMemberLeadership>> recentLeader = Optional.empty();
ClusterMembershipRevision<ClusterMemberLeadership> latestLeader = null;
for (ClusterMembershipSnapshot snapshot : healthySnapshots) {
if (snapshot.getLeaderRevision().isPresent()) {
if (recentLeader.isPresent()) {
if (recentLeader.get().getRevision() < snapshot.getLeaderRevision().get().getRevision()) {
recentLeader = snapshot.getLeaderRevision();
ClusterMembershipRevision<ClusterMemberLeadership> snapshotLeader = snapshot.getLeaderRevision().orElse(null);
if (snapshotLeader != null) {
if (latestLeader != null) {
if(latestLeader.getCurrent().getMemberId().equals(snapshotLeader.getCurrent().getMemberId())) {
latestLeader = latestLeader.getRevision() < snapshotLeader.getRevision() ? snapshotLeader : latestLeader;
} else {
latestLeader = latestLeader.getTimestamp() < snapshotLeader.getTimestamp() ? snapshotLeader : latestLeader;
}
} else {
recentLeader = snapshot.getLeaderRevision();
latestLeader = snapshotLeader;
}
}
}
recentLeader.ifPresent(builder::withLeaderRevision);
if(latestLeader != null) {
builder.withLeaderRevision(latestLeader);
}

// Choose latest version of each
long minStaleness = healthySnapshots.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public interface KubeClusterMembershipConfiguration {
/**
* Data staleness threshold above which the registration data are removed.
*/
@DefaultValue("600000")
@DefaultValue("180000")
long getRegistrationCleanupThresholdMs();

@DefaultValue("500")
Expand Down

0 comments on commit a8fbdd3

Please sign in to comment.