alshabib

fix for host remove event when an instance comes back online

Change-Id: Ie9099eabcda7f7e0435a09eeca17e2f8954e051d
...@@ -105,6 +105,8 @@ public class DistributedHostStore ...@@ -105,6 +105,8 @@ public class DistributedHostStore
105 105
106 hosts = host.asJavaMap(); 106 hosts = host.asJavaMap();
107 107
108 + prevHosts.putAll(hosts);
109 +
108 host.addListener(hostLocationTracker); 110 host.addListener(hostLocationTracker);
109 111
110 log.info("Started"); 112 log.info("Started");
...@@ -293,19 +295,25 @@ public class DistributedHostStore ...@@ -293,19 +295,25 @@ public class DistributedHostStore
293 @Override 295 @Override
294 public void event(MapEvent<HostId, DefaultHost> event) { 296 public void event(MapEvent<HostId, DefaultHost> event) {
295 DefaultHost host = checkNotNull(event.value().value()); 297 DefaultHost host = checkNotNull(event.value().value());
296 - if (event.type() == MapEvent.Type.INSERT) {
297 Host prevHost = prevHosts.put(host.id(), host); 298 Host prevHost = prevHosts.put(host.id(), host);
298 - if (prevHost == null) { 299 + switch (event.type()) {
300 + case INSERT:
299 notifyDelegate(new HostEvent(HOST_ADDED, host)); 301 notifyDelegate(new HostEvent(HOST_ADDED, host));
300 - } else if (!Objects.equals(prevHost.location(), host.location())) { 302 + break;
303 + case UPDATE:
304 + if (!Objects.equals(prevHost.location(), host.location())) {
301 notifyDelegate(new HostEvent(HOST_MOVED, host, prevHost)); 305 notifyDelegate(new HostEvent(HOST_MOVED, host, prevHost));
302 } else if (!Objects.equals(prevHost, host)) { 306 } else if (!Objects.equals(prevHost, host)) {
303 notifyDelegate(new HostEvent(HOST_UPDATED, host, prevHost)); 307 notifyDelegate(new HostEvent(HOST_UPDATED, host, prevHost));
304 } 308 }
305 - } else if (event.type() == MapEvent.Type.REMOVE) { 309 + break;
310 + case REMOVE:
306 if (prevHosts.remove(host.id()) != null) { 311 if (prevHosts.remove(host.id()) != null) {
307 notifyDelegate(new HostEvent(HOST_REMOVED, host)); 312 notifyDelegate(new HostEvent(HOST_REMOVED, host));
308 } 313 }
314 + break;
315 + default:
316 + log.warn("Unknown map event type: {}", event.type());
309 } 317 }
310 } 318 }
311 } 319 }
......