Relinquish mastership when device reports "permission" denied event
Also reduces default pipeconf watchdog probe interval
Also fixes NPE on GDP when device is unreachable
Change-Id: Ie2fe1874b0883a037596d9a555a2f8cc030a55a6
(cherry picked from commit d797e2c28505fbdbb8597038ebcf977a053bae72)
diff --git a/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java b/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
index 42faa0c..e5c321e 100644
--- a/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
+++ b/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
@@ -455,7 +455,7 @@
// Start connection via handshaker.
final Boolean connectSuccess = getFutureWithDeadline(
handshaker.connect(), "initiating connection",
- deviceId, null, opTimeoutShort);
+ deviceId, false, opTimeoutShort);
if (!connectSuccess) {
log.warn("Unable to connect to {}", deviceId);
}
@@ -887,6 +887,12 @@
}
}
+ private void handleNotMaster(DeviceId deviceId) {
+ log.warn("Device {} notified that this node is not master, " +
+ "relinquishing mastership...", deviceId);
+ mastershipService.relinquishMastership(deviceId);
+ }
+
private <U> U getFutureWithDeadline(CompletableFuture<U> future, String opDescription,
DeviceId deviceId, U defaultValue, int timeout) {
try {
@@ -948,6 +954,9 @@
case ROLE_NONE:
handleMastershipResponse(deviceId, MastershipRole.NONE);
break;
+ case NOT_MASTER:
+ handleNotMaster(deviceId);
+ break;
default:
log.warn("Unrecognized device agent event {}", event.type());
}