Frank Wang
Committed by Gerrit Code Review

[ONOS-4789]some services don't remove listener in deactive function

Change-Id: I74c3f4eb14edcd93d06a8838a4205df381c7f678
...@@ -257,6 +257,7 @@ public class GossipDeviceStore ...@@ -257,6 +257,7 @@ public class GossipDeviceStore
257 257
258 @Deactivate 258 @Deactivate
259 public void deactivate() { 259 public void deactivate() {
260 + devicePortStats.removeListener(portStatsListener);
260 devicePortStats.destroy(); 261 devicePortStats.destroy();
261 devicePortDeltaStats.destroy(); 262 devicePortDeltaStats.destroy();
262 executor.shutdownNow(); 263 executor.shutdownNow();
...@@ -274,6 +275,24 @@ public class GossipDeviceStore ...@@ -274,6 +275,24 @@ public class GossipDeviceStore
274 devices.clear(); 275 devices.clear();
275 devicePorts.clear(); 276 devicePorts.clear();
276 availableDevices.clear(); 277 availableDevices.clear();
278 + clusterCommunicator.removeSubscriber(
279 + GossipDeviceStoreMessageSubjects.DEVICE_UPDATE);
280 + clusterCommunicator.removeSubscriber(
281 + GossipDeviceStoreMessageSubjects.DEVICE_OFFLINE);
282 + clusterCommunicator.removeSubscriber(
283 + GossipDeviceStoreMessageSubjects.DEVICE_REMOVE_REQ);
284 + clusterCommunicator.removeSubscriber(
285 + GossipDeviceStoreMessageSubjects.DEVICE_REMOVED);
286 + clusterCommunicator.removeSubscriber(
287 + GossipDeviceStoreMessageSubjects.PORT_UPDATE);
288 + clusterCommunicator.removeSubscriber(
289 + GossipDeviceStoreMessageSubjects.PORT_STATUS_UPDATE);
290 + clusterCommunicator.removeSubscriber(
291 + GossipDeviceStoreMessageSubjects.DEVICE_ADVERTISE);
292 + clusterCommunicator.removeSubscriber(
293 + GossipDeviceStoreMessageSubjects.DEVICE_INJECTED);
294 + clusterCommunicator.removeSubscriber(
295 + GossipDeviceStoreMessageSubjects.PORT_INJECTED);
277 log.info("Stopped"); 296 log.info("Stopped");
278 } 297 }
279 298
......
...@@ -90,6 +90,7 @@ public class DistributedFlowObjectiveStore ...@@ -90,6 +90,7 @@ public class DistributedFlowObjectiveStore
90 90
91 @Deactivate 91 @Deactivate
92 public void deactivate() { 92 public void deactivate() {
93 + nextGroups.removeListener(mapListener);
93 tpool.shutdown(); 94 tpool.shutdown();
94 log.info("Stopped"); 95 log.info("Stopped");
95 } 96 }
......
...@@ -135,11 +135,12 @@ public class DistributedGroupStore ...@@ -135,11 +135,12 @@ public class DistributedGroupStore
135 groupEntriesById = new ConcurrentHashMap<>(); 135 groupEntriesById = new ConcurrentHashMap<>();
136 private ConsistentMap<GroupStoreKeyMapKey, 136 private ConsistentMap<GroupStoreKeyMapKey,
137 StoredGroupEntry> auditPendingReqQueue = null; 137 StoredGroupEntry> auditPendingReqQueue = null;
138 + private MapEventListener<GroupStoreKeyMapKey, StoredGroupEntry>
139 + mapListener = new GroupStoreKeyMapListener();
138 private final ConcurrentMap<DeviceId, ConcurrentMap<GroupId, Group>> 140 private final ConcurrentMap<DeviceId, ConcurrentMap<GroupId, Group>>
139 extraneousGroupEntriesById = new ConcurrentHashMap<>(); 141 extraneousGroupEntriesById = new ConcurrentHashMap<>();
140 private ExecutorService messageHandlingExecutor; 142 private ExecutorService messageHandlingExecutor;
141 private static final int MESSAGE_HANDLER_THREAD_POOL_SIZE = 1; 143 private static final int MESSAGE_HANDLER_THREAD_POOL_SIZE = 1;
142 -
143 private final HashMap<DeviceId, Boolean> deviceAuditStatus = new HashMap<>(); 144 private final HashMap<DeviceId, Boolean> deviceAuditStatus = new HashMap<>();
144 145
145 private final AtomicInteger groupIdGen = new AtomicInteger(); 146 private final AtomicInteger groupIdGen = new AtomicInteger();
...@@ -198,7 +199,7 @@ public class DistributedGroupStore ...@@ -198,7 +199,7 @@ public class DistributedGroupStore
198 .withName("onos-group-store-keymap") 199 .withName("onos-group-store-keymap")
199 .withSerializer(serializer) 200 .withSerializer(serializer)
200 .build(); 201 .build();
201 - groupStoreEntriesByKey.addListener(new GroupStoreKeyMapListener()); 202 + groupStoreEntriesByKey.addListener(mapListener);
202 log.debug("Current size of groupstorekeymap:{}", 203 log.debug("Current size of groupstorekeymap:{}",
203 groupStoreEntriesByKey.size()); 204 groupStoreEntriesByKey.size());
204 205
...@@ -216,6 +217,7 @@ public class DistributedGroupStore ...@@ -216,6 +217,7 @@ public class DistributedGroupStore
216 217
217 @Deactivate 218 @Deactivate
218 public void deactivate() { 219 public void deactivate() {
220 + groupStoreEntriesByKey.removeListener(mapListener);
219 cfgService.unregisterProperties(getClass(), false); 221 cfgService.unregisterProperties(getClass(), false);
220 clusterCommunicator.removeSubscriber(GroupStoreMessageSubjects.REMOTE_GROUP_OP_REQUEST); 222 clusterCommunicator.removeSubscriber(GroupStoreMessageSubjects.REMOTE_GROUP_OP_REQUEST);
221 log.info("Stopped"); 223 log.info("Stopped");
......
...@@ -86,6 +86,12 @@ public class GossipIntentStore ...@@ -86,6 +86,12 @@ public class GossipIntentStore
86 86
87 private final AtomicLong sequenceNumber = new AtomicLong(0); 87 private final AtomicLong sequenceNumber = new AtomicLong(0);
88 88
89 + private EventuallyConsistentMapListener<Key, IntentData>
90 + mapCurrentListener = new InternalCurrentListener();
91 +
92 + private EventuallyConsistentMapListener<Key, IntentData>
93 + mapPendingListener = new InternalPendingListener();
94 +
89 @Activate 95 @Activate
90 public void activate() { 96 public void activate() {
91 KryoNamespace.Builder intentSerializer = KryoNamespace.newBuilder() 97 KryoNamespace.Builder intentSerializer = KryoNamespace.newBuilder()
...@@ -111,14 +117,16 @@ public class GossipIntentStore ...@@ -111,14 +117,16 @@ public class GossipIntentStore
111 .withPeerUpdateFunction((key, intentData) -> getPeerNodes(key, intentData)) 117 .withPeerUpdateFunction((key, intentData) -> getPeerNodes(key, intentData))
112 .build(); 118 .build();
113 119
114 - currentMap.addListener(new InternalCurrentListener()); 120 + currentMap.addListener(mapCurrentListener);
115 - pendingMap.addListener(new InternalPendingListener()); 121 + pendingMap.addListener(mapPendingListener);
116 122
117 log.info("Started"); 123 log.info("Started");
118 } 124 }
119 125
120 @Deactivate 126 @Deactivate
121 public void deactivate() { 127 public void deactivate() {
128 + currentMap.removeListener(mapCurrentListener);
129 + pendingMap.removeListener(mapPendingListener);
122 currentMap.destroy(); 130 currentMap.destroy();
123 pendingMap.destroy(); 131 pendingMap.destroy();
124 132
......