Yuta HIGUCHI
Committed by Gerrit Code Review

DistributedFlowRuleStore: handle no master present case

Change-Id: I56f4bce549aecc689d7a4798485b025a87ecdeb9
...@@ -519,7 +519,8 @@ public class DistributedFlowRuleStore ...@@ -519,7 +519,8 @@ public class DistributedFlowRuleStore
519 519
520 @Override 520 @Override
521 public FlowRuleEvent removeFlowRule(FlowEntry rule) { 521 public FlowRuleEvent removeFlowRule(FlowEntry rule) {
522 - ReplicaInfo replicaInfo = replicaInfoManager.getReplicaInfoFor(rule.deviceId()); 522 + final DeviceId deviceId = rule.deviceId();
523 + ReplicaInfo replicaInfo = replicaInfoManager.getReplicaInfoFor(deviceId);
523 524
524 final NodeId localId = clusterService.getLocalNode().id(); 525 final NodeId localId = clusterService.getLocalNode().id();
525 if (localId.equals(replicaInfo.master().orNull())) { 526 if (localId.equals(replicaInfo.master().orNull())) {
...@@ -527,8 +528,14 @@ public class DistributedFlowRuleStore ...@@ -527,8 +528,14 @@ public class DistributedFlowRuleStore
527 return removeFlowRuleInternal(rule); 528 return removeFlowRuleInternal(rule);
528 } 529 }
529 530
531 + if (!replicaInfo.master().isPresent()) {
532 + log.warn("No master for {}", deviceId);
533 + // TODO: revisit if this should be null (="no-op") or Exception
534 + return null;
535 + }
536 +
530 log.trace("Forwarding removeFlowRule to {}, which is the primary (master) for device {}", 537 log.trace("Forwarding removeFlowRule to {}, which is the primary (master) for device {}",
531 - replicaInfo.master().orNull(), rule.deviceId()); 538 + replicaInfo.master().orNull(), deviceId);
532 539
533 ClusterMessage message = new ClusterMessage( 540 ClusterMessage message = new ClusterMessage(
534 clusterService.getLocalNode().id(), 541 clusterService.getLocalNode().id(),
......