[ONOS-7054] Implement prototype of ISSU protocol
Change-Id: Id543c0de9c97b68f977c824cbc987b35d81beb2d
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index d2b2536..bbf6d39 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -463,7 +463,7 @@
// isReachable but was not MASTER or STANDBY, get a role and apply
// Note: NONE triggers request to MastershipService
- reassertRole(deviceId, NONE);
+ reassertRole(deviceId, mastershipService.getLocalRole(deviceId));
}
}
@@ -819,49 +819,32 @@
private void reassertRole(final DeviceId did,
final MastershipRole nextRole) {
- MastershipRole myNextRole = nextRole;
- if (myNextRole == NONE) {
- try {
- mastershipService.requestRoleFor(did).get();
- MastershipTerm term = termService.getMastershipTerm(did);
- if (term != null && localNodeId.equals(term.master())) {
- myNextRole = MASTER;
- } else {
- myNextRole = STANDBY;
- }
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- log.error("Interrupted waiting for Mastership", e);
- } catch (ExecutionException e) {
- log.error("Encountered an error waiting for Mastership", e);
- }
- }
-
- switch (myNextRole) {
+ switch (nextRole) {
case MASTER:
final Device device = getDevice(did);
if ((device != null) && !isAvailable(did)) {
store.markOnline(did);
}
// TODO: should apply role only if there is mismatch
- log.debug("Applying role {} to {}", myNextRole, did);
+ log.debug("Applying role {} to {}", nextRole, did);
if (!applyRoleAndProbe(did, MASTER)) {
- log.warn("Unsuccessful applying role {} to {}", myNextRole, did);
+ log.warn("Unsuccessful applying role {} to {}", nextRole, did);
// immediately failed to apply role
mastershipService.relinquishMastership(did);
// FIXME disconnect?
}
break;
case STANDBY:
- log.debug("Applying role {} to {}", myNextRole, did);
+ log.debug("Applying role {} to {}", nextRole, did);
if (!applyRoleAndProbe(did, STANDBY)) {
- log.warn("Unsuccessful applying role {} to {}", myNextRole, did);
+ log.warn("Unsuccessful applying role {} to {}", nextRole, did);
// immediately failed to apply role
mastershipService.relinquishMastership(did);
// FIXME disconnect?
}
break;
case NONE:
+ break;
default:
// should never reach here
log.error("You didn't see anything. I did not exist.");