ONOS-1883: Fix for lost flow rules on CLI directed mastership changes.
- Made all mastership role change operations asynchronous, which they are.
- In flowrule store we now check to see if any new backups need to be made when a device backup location (standby) changes
- In device mastership store we now wait briefly before we step down from mastership after promoting a new candidate as highest standy
Change-Id: Icb76cf4d0d23403053a3fd5a458a940b847da49f
diff --git a/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java b/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java
index 35d7c4e..6b64705 100644
--- a/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java
+++ b/core/api/src/main/java/org/onosproject/mastership/MastershipStore.java
@@ -16,6 +16,7 @@
package org.onosproject.mastership;
import java.util.Set;
+import java.util.concurrent.CompletableFuture;
import org.onosproject.cluster.NodeId;
import org.onosproject.cluster.RoleInfo;
@@ -80,7 +81,7 @@
* @param deviceId device identifier
* @return a mastership event
*/
- MastershipEvent setMaster(NodeId nodeId, DeviceId deviceId);
+ CompletableFuture<MastershipEvent> setMaster(NodeId nodeId, DeviceId deviceId);
/**
* Returns the current master and number of past mastership hand-offs
@@ -100,7 +101,7 @@
* @param deviceId device to revoke mastership role for
* @return a mastership event
*/
- MastershipEvent setStandby(NodeId nodeId, DeviceId deviceId);
+ CompletableFuture<MastershipEvent> setStandby(NodeId nodeId, DeviceId deviceId);
/**
* Allows a controller instance to give up its current role for a device.
@@ -111,7 +112,7 @@
* @param deviceId device to revoke mastership role for
* @return a mastership event
*/
- MastershipEvent relinquishRole(NodeId nodeId, DeviceId deviceId);
+ CompletableFuture<MastershipEvent> relinquishRole(NodeId nodeId, DeviceId deviceId);
/**
* Removes all the roles for the specified controller instance.