CAMEL-11331: Adding clarifications to the leader interface and fix impl
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/debfeed6 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/debfeed6 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/debfeed6 Branch: refs/heads/master Commit: debfeed6ef0b45f725d4a20ea5d48a2f41fabec2 Parents: e4cab32 Author: Nicola Ferraro <ni.ferr...@gmail.com> Authored: Fri Jul 7 17:18:05 2017 +0200 Committer: Nicola Ferraro <ni.ferr...@gmail.com> Committed: Tue Aug 8 16:39:43 2017 +0200 ---------------------------------------------------------------------- .../camel/ha/CamelClusterEventListener.java | 29 ++++++++++++++++++-- .../kubernetes/ha/KubernetesClusterView.java | 4 +-- ...ubernetesLeaseBasedLeadershipController.java | 2 +- 3 files changed, 28 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/debfeed6/camel-core/src/main/java/org/apache/camel/ha/CamelClusterEventListener.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/ha/CamelClusterEventListener.java b/camel-core/src/main/java/org/apache/camel/ha/CamelClusterEventListener.java index 5c19970..1a972ca 100644 --- a/camel-core/src/main/java/org/apache/camel/ha/CamelClusterEventListener.java +++ b/camel-core/src/main/java/org/apache/camel/ha/CamelClusterEventListener.java @@ -17,16 +17,39 @@ package org.apache.camel.ha; /** - * Marker interface + * Marker interface for cluster events */ public interface CamelClusterEventListener { interface Leadership extends CamelClusterEventListener { + + /** + * Notify a change in the leadership for a particular cluster. + * + * @param view the cluster view + * @param leader the new leader or null (when there are no active leaders) + */ void leadershipChanged(CamelClusterView view, CamelClusterMember leader); + } interface Membership extends CamelClusterEventListener { - void memberAdded(CamelClusterView view, CamelClusterMember leader); - void memberRemoved(CamelClusterView view, CamelClusterMember leader); + + /** + * Notify a change (addition) in the cluster composition. + * + * @param view the cluster view + * @param member the member that has been added + */ + void memberAdded(CamelClusterView view, CamelClusterMember member); + + /** + * Notify a change (removal) in the cluster composition. + * + * @param view the cluster view + * @param member the member that has been removed + */ + void memberRemoved(CamelClusterView view, CamelClusterMember member); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/debfeed6/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/KubernetesClusterView.java ---------------------------------------------------------------------- diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/KubernetesClusterView.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/KubernetesClusterView.java index e324b3f..28f38a5 100644 --- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/KubernetesClusterView.java +++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/KubernetesClusterView.java @@ -91,9 +91,7 @@ public class KubernetesClusterView extends AbstractCamelClusterView { // New leader Optional<String> leader = KubernetesClusterEvent.KubernetesClusterLeaderChangedEvent.class.cast(event).getData(); currentLeader = leader.map(this::toMember); - if (currentLeader.isPresent()) { - fireLeadershipChangedEvent(currentLeader.get()); - } + fireLeadershipChangedEvent(currentLeader.orElse(null)); } else if (event instanceof KubernetesClusterEvent.KubernetesClusterMemberListChangedEvent) { Set<String> members = KubernetesClusterEvent.KubernetesClusterMemberListChangedEvent.class.cast(event).getData(); Set<String> oldMembers = currentMembers.stream().map(CamelClusterMember::getId).collect(Collectors.toSet()); http://git-wip-us.apache.org/repos/asf/camel/blob/debfeed6/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/lock/KubernetesLeaseBasedLeadershipController.java ---------------------------------------------------------------------- diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/lock/KubernetesLeaseBasedLeadershipController.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/lock/KubernetesLeaseBasedLeadershipController.java index b385925..8e96a72 100644 --- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/lock/KubernetesLeaseBasedLeadershipController.java +++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/ha/lock/KubernetesLeaseBasedLeadershipController.java @@ -362,7 +362,7 @@ public class KubernetesLeaseBasedLeadershipController implements Service { // Sending notifications in case of leader change if (!newLeader.equals(this.currentLeader)) { - LOG.debug("Current leader has changed from {} to {}. Sending notifications...", this.currentLeader, newLeader); + LOG.info("Current leader has changed from {} to {}. Sending notifications...", this.currentLeader, newLeader); this.currentLeader = newLeader; eventHandler.onKubernetesClusterEvent((KubernetesClusterEvent.KubernetesClusterLeaderChangedEvent) () -> newLeader); } else {