added FIXME for disconnection corner case
- disconnection event triggered while
DeviceManager recognition of mastership is not in sync yet.
Change-Id: I03959ca59a4220a8e91b88f2f8565c883e39a93f
diff --git a/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java
index 7b7eb82..b163f08 100644
--- a/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java
@@ -276,9 +276,15 @@
//there are times when this node will correctly have mastership, BUT
//that isn't reflected in the ClockManager before the device disconnects.
//we want to let go of the device anyways, so make sure this happens.
+
+ // FIXME: Come up with workaround for above scenario.
MastershipTerm term = termService.getMastershipTerm(deviceId);
- deviceClockProviderService.setMastershipTerm(deviceId, term);
- event = store.markOffline(deviceId);
+ final NodeId myNodeId = clusterService.getLocalNode().id();
+ // TODO: Move this type of check inside device clock manager, etc.
+ if (myNodeId.equals(term.master())) {
+ deviceClockProviderService.setMastershipTerm(deviceId, term);
+ event = store.markOffline(deviceId);
+ }
} finally {
//relinquish master role and ability to be backup.
mastershipService.relinquishMastership(deviceId);