Yuta HIGUCHI

removeListener on deactivate

Change-Id: I82b2cc7960bc19ebb1c6875e8cf3dd79d7421dd1
...@@ -72,6 +72,10 @@ public class DistributedDeviceStore ...@@ -72,6 +72,10 @@ public class DistributedDeviceStore
72 private IMap<byte[], byte[]> rawDevicePorts; 72 private IMap<byte[], byte[]> rawDevicePorts;
73 private LoadingCache<DeviceId, Optional<Map<PortNumber, Port>>> devicePorts; 73 private LoadingCache<DeviceId, Optional<Map<PortNumber, Port>>> devicePorts;
74 74
75 + private String devicesListener;
76 +
77 + private String portsListener;
78 +
75 @Override 79 @Override
76 @Activate 80 @Activate
77 public void activate() { 81 public void activate() {
...@@ -86,7 +90,7 @@ public class DistributedDeviceStore ...@@ -86,7 +90,7 @@ public class DistributedDeviceStore
86 = new OptionalCacheLoader<>(storeService, rawDevices); 90 = new OptionalCacheLoader<>(storeService, rawDevices);
87 devices = new AbsentInvalidatingLoadingCache<>(newBuilder().build(deviceLoader)); 91 devices = new AbsentInvalidatingLoadingCache<>(newBuilder().build(deviceLoader));
88 // refresh/populate cache based on notification from other instance 92 // refresh/populate cache based on notification from other instance
89 - rawDevices.addEntryListener(new RemoteDeviceEventHandler(devices), includeValue); 93 + devicesListener = rawDevices.addEntryListener(new RemoteDeviceEventHandler(devices), includeValue);
90 94
91 // TODO cache availableDevices 95 // TODO cache availableDevices
92 availableDevices = theInstance.getSet("availableDevices"); 96 availableDevices = theInstance.getSet("availableDevices");
...@@ -96,7 +100,7 @@ public class DistributedDeviceStore ...@@ -96,7 +100,7 @@ public class DistributedDeviceStore
96 = new OptionalCacheLoader<>(storeService, rawDevicePorts); 100 = new OptionalCacheLoader<>(storeService, rawDevicePorts);
97 devicePorts = new AbsentInvalidatingLoadingCache<>(newBuilder().build(devicePortLoader)); 101 devicePorts = new AbsentInvalidatingLoadingCache<>(newBuilder().build(devicePortLoader));
98 // refresh/populate cache based on notification from other instance 102 // refresh/populate cache based on notification from other instance
99 - rawDevicePorts.addEntryListener(new RemotePortEventHandler(devicePorts), includeValue); 103 + portsListener = rawDevicePorts.addEntryListener(new RemotePortEventHandler(devicePorts), includeValue);
100 104
101 loadDeviceCache(); 105 loadDeviceCache();
102 loadDevicePortsCache(); 106 loadDevicePortsCache();
...@@ -106,6 +110,8 @@ public class DistributedDeviceStore ...@@ -106,6 +110,8 @@ public class DistributedDeviceStore
106 110
107 @Deactivate 111 @Deactivate
108 public void deactivate() { 112 public void deactivate() {
113 + rawDevicePorts.removeEntryListener(portsListener);
114 + rawDevices.removeEntryListener(devicesListener);
109 log.info("Stopped"); 115 log.info("Stopped");
110 } 116 }
111 117
......
...@@ -58,6 +58,8 @@ public class DistributedLinkStore ...@@ -58,6 +58,8 @@ public class DistributedLinkStore
58 private final Multimap<DeviceId, Link> srcLinks = HashMultimap.create(); 58 private final Multimap<DeviceId, Link> srcLinks = HashMultimap.create();
59 private final Multimap<DeviceId, Link> dstLinks = HashMultimap.create(); 59 private final Multimap<DeviceId, Link> dstLinks = HashMultimap.create();
60 60
61 + private String linksListener;
62 +
61 @Override 63 @Override
62 @Activate 64 @Activate
63 public void activate() { 65 public void activate() {
...@@ -71,7 +73,7 @@ public class DistributedLinkStore ...@@ -71,7 +73,7 @@ public class DistributedLinkStore
71 = new OptionalCacheLoader<>(storeService, rawLinks); 73 = new OptionalCacheLoader<>(storeService, rawLinks);
72 links = new AbsentInvalidatingLoadingCache<>(newBuilder().build(linkLoader)); 74 links = new AbsentInvalidatingLoadingCache<>(newBuilder().build(linkLoader));
73 // refresh/populate cache based on notification from other instance 75 // refresh/populate cache based on notification from other instance
74 - rawLinks.addEntryListener(new RemoteLinkEventHandler(links), includeValue); 76 + linksListener = rawLinks.addEntryListener(new RemoteLinkEventHandler(links), includeValue);
75 77
76 loadLinkCache(); 78 loadLinkCache();
77 79
...@@ -80,7 +82,7 @@ public class DistributedLinkStore ...@@ -80,7 +82,7 @@ public class DistributedLinkStore
80 82
81 @Deactivate 83 @Deactivate
82 public void deactivate() { 84 public void deactivate() {
83 - super.activate(); 85 + rawLinks.removeEntryListener(linksListener);
84 log.info("Stopped"); 86 log.info("Stopped");
85 } 87 }
86 88
......