diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java index 42a3b1ed7e88aba853b64fbcf0a7e48e5f54aa5c..4645c0d7c0b3ebbb7878956ba0a22d4172a2091b 100755 --- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java +++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java @@ -1660,15 +1660,16 @@ public class DeviceManagerImpl implements IDeviceManagerService, IOFMessageListe if (topology.isAllowed(swid, port) == false) continue; - if (tempAPMap.containsKey(clusterId)) { + DeviceAttachmentPoint existingDap = tempAPMap.get(clusterId); + if (existingDap != null) { // We compare to see which one is newer, move attachment // point to "old" list. // They are removed after deleting from storage. - - DeviceAttachmentPoint existingDap = tempAPMap.get(clusterId); if (isNewer(dap, existingDap)) { tempAPMap.put(clusterId, dap); tempOldAPMap.put(clusterId, existingDap); + } else { + tempOldAPMap.put(clusterId, dap); } } else { tempAPMap.put(clusterId, dap); @@ -1684,15 +1685,25 @@ public class DeviceManagerImpl implements IDeviceManagerService, IOFMessageListe * Also make sure the attachmentPoints are in non-blocked state */ for (DeviceAttachmentPoint dap: tempAPMap.values()) { - dap.setBlocked(false); + if (log.isDebugEnabled()) { + log.debug("Reset AP {} for device {}", dap, d); + } + //dap.setBlocked(false); + dap.resetConflictState(); } d.setAttachmentPoints(tempAPMap.values()); for (DeviceAttachmentPoint dap : tempOldAPMap.values()) { - dap.setBlocked(false); + if (log.isDebugEnabled()) { + log.debug("Reset Old AP {} for device {}", dap, d); + } + //dap.setBlocked(false); + dap.resetConflictState(); d.addOldAttachmentPoint(dap); } - log.debug("After cleanup, device {}", d); + if (log.isDebugEnabled()) { + log.debug("After cleanup, device {}", d); + } } }