Committed by
Gerrit Code Review
When relinquishing mastership, wait for LeadershipService::withdraw to complete …
…before returning a MastershipEvent Change-Id: Ieb0816bf3d17fee28815ea59959ed6d4a4efb478
Showing
1 changed file
with
16 additions
and
16 deletions
| ... | @@ -127,7 +127,7 @@ public class ConsistentDeviceMastershipStore | ... | @@ -127,7 +127,7 @@ public class ConsistentDeviceMastershipStore |
| 127 | transferExecutor = | 127 | transferExecutor = |
| 128 | Executors.newSingleThreadScheduledExecutor( | 128 | Executors.newSingleThreadScheduledExecutor( |
| 129 | groupedThreads("onos/store/device/mastership", "mastership-transfer-executor")); | 129 | groupedThreads("onos/store/device/mastership", "mastership-transfer-executor")); |
| 130 | - clusterCommunicator.<DeviceId, MastershipEvent>addSubscriber(ROLE_RELINQUISH_SUBJECT, | 130 | + clusterCommunicator.addSubscriber(ROLE_RELINQUISH_SUBJECT, |
| 131 | SERIALIZER::decode, | 131 | SERIALIZER::decode, |
| 132 | this::relinquishLocalRole, | 132 | this::relinquishLocalRole, |
| 133 | SERIALIZER::encode, | 133 | SERIALIZER::encode, |
| ... | @@ -310,25 +310,26 @@ public class ConsistentDeviceMastershipStore | ... | @@ -310,25 +310,26 @@ public class ConsistentDeviceMastershipStore |
| 310 | checkArgument(nodeId != null, NODE_ID_NULL); | 310 | checkArgument(nodeId != null, NODE_ID_NULL); |
| 311 | checkArgument(deviceId != null, DEVICE_ID_NULL); | 311 | checkArgument(deviceId != null, DEVICE_ID_NULL); |
| 312 | 312 | ||
| 313 | - if (!nodeId.equals(localNodeId)) { | 313 | + if (nodeId.equals(localNodeId)) { |
| 314 | - log.debug("Forwarding request to relinquish " | 314 | + return relinquishLocalRole(deviceId); |
| 315 | - + "role for device {} to {}", deviceId, nodeId); | ||
| 316 | - return clusterCommunicator.sendAndReceive( | ||
| 317 | - deviceId, | ||
| 318 | - ROLE_RELINQUISH_SUBJECT, | ||
| 319 | - SERIALIZER::encode, | ||
| 320 | - SERIALIZER::decode, | ||
| 321 | - nodeId); | ||
| 322 | } | 315 | } |
| 323 | - return CompletableFuture.completedFuture(relinquishLocalRole(deviceId)); | 316 | + |
| 317 | + log.debug("Forwarding request to relinquish " | ||
| 318 | + + "role for device {} to {}", deviceId, nodeId); | ||
| 319 | + return clusterCommunicator.sendAndReceive( | ||
| 320 | + deviceId, | ||
| 321 | + ROLE_RELINQUISH_SUBJECT, | ||
| 322 | + SERIALIZER::encode, | ||
| 323 | + SERIALIZER::decode, | ||
| 324 | + nodeId); | ||
| 324 | } | 325 | } |
| 325 | 326 | ||
| 326 | - private MastershipEvent relinquishLocalRole(DeviceId deviceId) { | 327 | + private CompletableFuture<MastershipEvent> relinquishLocalRole(DeviceId deviceId) { |
| 327 | checkArgument(deviceId != null, DEVICE_ID_NULL); | 328 | checkArgument(deviceId != null, DEVICE_ID_NULL); |
| 328 | 329 | ||
| 329 | // Check if this node is can be managed by this node. | 330 | // Check if this node is can be managed by this node. |
| 330 | if (!connectedDevices.contains(deviceId)) { | 331 | if (!connectedDevices.contains(deviceId)) { |
| 331 | - return null; | 332 | + return CompletableFuture.completedFuture(null); |
| 332 | } | 333 | } |
| 333 | 334 | ||
| 334 | String leadershipTopic = createDeviceMastershipTopic(deviceId); | 335 | String leadershipTopic = createDeviceMastershipTopic(deviceId); |
| ... | @@ -339,9 +340,8 @@ public class ConsistentDeviceMastershipStore | ... | @@ -339,9 +340,8 @@ public class ConsistentDeviceMastershipStore |
| 339 | : MastershipEvent.Type.BACKUPS_CHANGED; | 340 | : MastershipEvent.Type.BACKUPS_CHANGED; |
| 340 | 341 | ||
| 341 | connectedDevices.remove(deviceId); | 342 | connectedDevices.remove(deviceId); |
| 342 | - leadershipService.withdraw(leadershipTopic); | 343 | + return leadershipService.withdraw(leadershipTopic) |
| 343 | - | 344 | + .thenApply(v -> new MastershipEvent(eventType, deviceId, getNodes(deviceId))); |
| 344 | - return new MastershipEvent(eventType, deviceId, getNodes(deviceId)); | ||
| 345 | } | 345 | } |
| 346 | 346 | ||
| 347 | private MastershipEvent transitionFromMasterToStandby(DeviceId deviceId) { | 347 | private MastershipEvent transitionFromMasterToStandby(DeviceId deviceId) { | ... | ... |
-
Please register or login to post a comment