Madan Jampani
Committed by Gerrit Code Review

Using AsyncLeaderElector primitive for Leadership

Change-Id: I0ff91ddaa3b5dec79e073496044c2f860ae94616
...@@ -18,9 +18,6 @@ package org.onosproject.cluster.impl; ...@@ -18,9 +18,6 @@ package org.onosproject.cluster.impl;
18 import static org.slf4j.LoggerFactory.getLogger; 18 import static org.slf4j.LoggerFactory.getLogger;
19 19
20 import java.util.Map; 20 import java.util.Map;
21 -import java.util.concurrent.Executors;
22 -import java.util.concurrent.ScheduledExecutorService;
23 -import java.util.concurrent.TimeUnit;
24 21
25 import org.apache.felix.scr.annotations.Activate; 22 import org.apache.felix.scr.annotations.Activate;
26 import org.apache.felix.scr.annotations.Component; 23 import org.apache.felix.scr.annotations.Component;
...@@ -28,9 +25,7 @@ import org.apache.felix.scr.annotations.Deactivate; ...@@ -28,9 +25,7 @@ import org.apache.felix.scr.annotations.Deactivate;
28 import org.apache.felix.scr.annotations.Reference; 25 import org.apache.felix.scr.annotations.Reference;
29 import org.apache.felix.scr.annotations.ReferenceCardinality; 26 import org.apache.felix.scr.annotations.ReferenceCardinality;
30 import org.apache.felix.scr.annotations.Service; 27 import org.apache.felix.scr.annotations.Service;
31 -import org.onlab.util.Tools;
32 import org.onosproject.cluster.ClusterService; 28 import org.onosproject.cluster.ClusterService;
33 -import org.onosproject.cluster.ControllerNode;
34 import org.onosproject.cluster.Leadership; 29 import org.onosproject.cluster.Leadership;
35 import org.onosproject.cluster.LeadershipAdminService; 30 import org.onosproject.cluster.LeadershipAdminService;
36 import org.onosproject.cluster.LeadershipEvent; 31 import org.onosproject.cluster.LeadershipEvent;
...@@ -65,25 +60,16 @@ public class LeadershipManager ...@@ -65,25 +60,16 @@ public class LeadershipManager
65 60
66 private NodeId localNodeId; 61 private NodeId localNodeId;
67 62
68 - private final ScheduledExecutorService deadlockDetector =
69 - Executors.newSingleThreadScheduledExecutor(Tools.groupedThreads("onos/leadership", ""));
70 -
71 @Activate 63 @Activate
72 public void activate() { 64 public void activate() {
73 localNodeId = clusterService.getLocalNode().id(); 65 localNodeId = clusterService.getLocalNode().id();
74 store.setDelegate(delegate); 66 store.setDelegate(delegate);
75 eventDispatcher.addSink(LeadershipEvent.class, listenerRegistry); 67 eventDispatcher.addSink(LeadershipEvent.class, listenerRegistry);
76 - deadlockDetector.scheduleWithFixedDelay(() -> clusterService.getNodes()
77 - .stream()
78 - .map(ControllerNode::id)
79 - .filter(id -> !clusterService.getState(id).isActive())
80 - .forEach(this::unregister), 0, 2, TimeUnit.SECONDS);
81 log.info("Started"); 68 log.info("Started");
82 } 69 }
83 70
84 @Deactivate 71 @Deactivate
85 public void deactivate() { 72 public void deactivate() {
86 - deadlockDetector.shutdown();
87 Maps.filterValues(store.getLeaderships(), v -> v.candidates().contains(localNodeId)) 73 Maps.filterValues(store.getLeaderships(), v -> v.candidates().contains(localNodeId))
88 .keySet() 74 .keySet()
89 .forEach(this::withdraw); 75 .forEach(this::withdraw);
......
...@@ -56,7 +56,7 @@ import com.google.common.collect.Sets; ...@@ -56,7 +56,7 @@ import com.google.common.collect.Sets;
56 * Implementation of {@code LeadershipStore} backed by {@link ConsistentMap}. 56 * Implementation of {@code LeadershipStore} backed by {@link ConsistentMap}.
57 */ 57 */
58 @Service 58 @Service
59 -@Component(immediate = true, enabled = true) 59 +@Component(immediate = true, enabled = false)
60 public class DistributedLeadershipStore 60 public class DistributedLeadershipStore
61 extends AbstractStore<LeadershipEvent, LeadershipStoreDelegate> 61 extends AbstractStore<LeadershipEvent, LeadershipStoreDelegate>
62 implements LeadershipStore { 62 implements LeadershipStore {
......
...@@ -47,7 +47,7 @@ import com.google.common.collect.Maps; ...@@ -47,7 +47,7 @@ import com.google.common.collect.Maps;
47 * primitive. 47 * primitive.
48 */ 48 */
49 @Service 49 @Service
50 -@Component(immediate = true, enabled = false) 50 +@Component(immediate = true, enabled = true)
51 public class NewDistributedLeadershipStore 51 public class NewDistributedLeadershipStore
52 extends AbstractStore<LeadershipEvent, LeadershipStoreDelegate> 52 extends AbstractStore<LeadershipEvent, LeadershipStoreDelegate>
53 implements LeadershipStore { 53 implements LeadershipStore {
......