X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fhosttracker%2Fimplementation%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fhosttracker%2Finternal%2FHostTracker.java;h=2fd81cbcd7b652e604f63c8f691a16b7dd29b185;hp=4a5259031724853d438c6ed45797bc985ae3e6dc;hb=c16583e9c8d97d9ebeb7a5ded77c3e6e385d4d1e;hpb=67a8679ab2eb3ad8d7914756e844243eac3cbd32 diff --git a/opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java b/opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java index 4a52590317..2fd81cbcd7 100644 --- a/opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java +++ b/opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java @@ -181,9 +181,9 @@ public class HostTracker implements IfIptoHost, IfHostListener, ISwitchManagerAw logger.debug("Creating Cache for HostTracker"); try { this.clusterContainerService.createCache(ACTIVE_HOST_CACHE, - EnumSet.of(IClusterServices.cacheMode.NON_TRANSACTIONAL)); + EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL)); this.clusterContainerService.createCache(INACTIVE_HOST_CACHE, - EnumSet.of(IClusterServices.cacheMode.NON_TRANSACTIONAL)); + EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL)); } catch (CacheConfigException cce) { logger.error("Cache couldn't be created for HostTracker - check cache mode"); } catch (CacheExistException cce) { @@ -434,7 +434,15 @@ public class HostTracker implements IfIptoHost, IfHostListener, ISwitchManagerAw } private void replaceHost(InetAddress networkAddr, HostNodeConnector removedHost, HostNodeConnector newHost) { + // Ignore ARP messages from internal nodes + NodeConnector newHostNc = newHost.getnodeConnector(); + boolean newHostIsInternal = topologyManager.isInternal(newHostNc); + if (newHostIsInternal) { + return; + } + newHost.initArpSendCountDown(); + if (hostsDB.replace(networkAddr, removedHost, newHost)) { logger.debug("Host move occurred: Old Host IP:{}, New Host IP: {}", removedHost.getNetworkAddress() .getHostAddress(), newHost.getNetworkAddress().getHostAddress()); @@ -518,6 +526,8 @@ public class HostTracker implements IfIptoHost, IfHostListener, ISwitchManagerAw if (hostExists(host)) { HostNodeConnector existinghost = hostsDB.get(host.getNetworkAddress()); existinghost.initArpSendCountDown(); + // Update the host + hostsDB.put(host.getNetworkAddress(), existinghost); return; } new NotifyHostThread(host).start();