X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardManager.java;h=4f3c521f442ea10765d06dd4f0372d72968e712a;hp=6de370e1afc1d39601d571d718093e950790d197;hb=0c74ca17e0d64c4c2a7555470a5737ebef148890;hpb=c89c9a5f25ea53a002a3cd0672f6e86b7a876f05 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 6de370e1af..4f3c521f44 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 @@ -203,6 +203,7 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { ShardInformation shardInformation = findShardInformation(leaderStateChanged.getMemberId()); if(shardInformation != null) { shardInformation.setLocalDataTree(leaderStateChanged.getLocalShardDataTree()); + shardInformation.setLeaderVersion(leaderStateChanged.getLeaderPayloadVersion()); if(shardInformation.setLeaderId(leaderStateChanged.getLeaderId())) { primaryShardInfoCache.remove(shardInformation.getShardName()); } @@ -516,7 +517,7 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { String primaryPath = info.getSerializedLeaderActor(); Object found = canReturnLocalShardState && info.isLeader() ? new LocalPrimaryShardFound(primaryPath, info.getLocalShardDataTree().get()) : - new RemotePrimaryShardFound(primaryPath); + new RemotePrimaryShardFound(primaryPath, info.getLeaderVersion()); if(LOG.isDebugEnabled()) { LOG.debug("{}: Found primary for {}: {}", persistenceId(), shardName, found); @@ -666,6 +667,7 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { private final Set onShardInitializedSet = Sets.newHashSet(); private String role ; private String leaderId; + private short leaderVersion; private ShardInformation(String shardName, ShardIdentifier shardId, Map peerAddresses) { @@ -820,13 +822,21 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { return changed; } - public String getLeaderId() { + String getLeaderId() { return leaderId; } - public void setLeaderAvailable(boolean leaderAvailable) { + void setLeaderAvailable(boolean leaderAvailable) { this.leaderAvailable = leaderAvailable; } + + short getLeaderVersion() { + return leaderVersion; + } + + void setLeaderVersion(short leaderVersion) { + this.leaderVersion = leaderVersion; + } } private static class ShardManagerCreator implements Creator {