From 7161b121b21aeea325fe33485c841af31f9f0cfd Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 22 Mar 2016 15:38:14 +0100 Subject: [PATCH] Make SwitchShardBehavior transport RaftState Instead of passing around generic strings (and potential failures from that), make sure the message carries a proper raft state. Change-Id: Id2c97773464d2a643f67a391247d58917c62d0c4 Signed-off-by: Robert Varga --- .../cluster/datastore/ShardManager.java | 2 +- .../jmx/mbeans/shardmanager/ShardManagerInfo.java | 3 ++- .../datastore/messages/SwitchShardBehavior.java | 15 +++++++++------ .../cluster/datastore/ShardManagerTest.java | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java index aec94ec080..33b3810447 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java @@ -853,7 +853,7 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { if(shardInformation != null && shardInformation.getActor() != null) { shardInformation.getActor().tell( - new SwitchBehavior(RaftState.valueOf(message.getNewState()), message.getTerm()), getSelf()); + new SwitchBehavior(message.getNewState(), message.getTerm()), getSelf()); } else { LOG.warn("Could not switch the behavior of shard {} to {} - shard is not yet available", message.getShardName(), message.getNewState()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java index 7a02a46626..394b14b6e9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java @@ -87,7 +87,8 @@ public class ShardManagerInfo extends AbstractMXBean implements ShardManagerInfo Preconditions.checkArgument(localShards.contains(shardName), shardName + " is not local"); Preconditions.checkArgument(ACCEPTABLE_STATES.contains(newState)); - shardManager.getSelf().tell(new SwitchShardBehavior(shardName, newState, term), ActorRef.noSender()); + shardManager.getSelf().tell(new SwitchShardBehavior(shardName, RaftState.valueOf(newState), term), + ActorRef.noSender()); } public void setSyncStatus(boolean syncStatus){ diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/SwitchShardBehavior.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/SwitchShardBehavior.java index f1c2a07b84..4e9f9cb373 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/SwitchShardBehavior.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/SwitchShardBehavior.java @@ -8,14 +8,17 @@ package org.opendaylight.controller.cluster.datastore.messages; -public class SwitchShardBehavior { +import com.google.common.base.Preconditions; +import org.opendaylight.controller.cluster.raft.RaftState; + +public final class SwitchShardBehavior { private final String shardName; - private final String newState; + private final RaftState newState; private final long term; - public SwitchShardBehavior(String shardName, String newState, long term) { - this.shardName = shardName; - this.newState = newState; + public SwitchShardBehavior(String shardName, RaftState newState, long term) { + this.shardName = Preconditions.checkNotNull(shardName); + this.newState = Preconditions.checkNotNull(newState); this.term = term; } @@ -23,7 +26,7 @@ public class SwitchShardBehavior { return shardName; } - public String getNewState() { + public RaftState getNewState() { return newState; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java index bb80b2c273..94ca07429c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java @@ -1171,7 +1171,7 @@ public class ShardManagerTest extends AbstractActorTest { shardManager.tell(new UpdateSchemaContext(TestModel.createTestContext()), getRef()); shardManager.tell(new ActorInitialized(), mockShardActor); - shardManager.tell(new SwitchShardBehavior(mockShardName, "Leader", 1000), getRef()); + shardManager.tell(new SwitchShardBehavior(mockShardName, RaftState.Leader, 1000), getRef()); SwitchBehavior switchBehavior = MessageCollectorActor.expectFirstMatching(mockShardActor, SwitchBehavior.class); -- 2.36.6