X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fmessages%2FBatchedModifications.java;h=77d2687ccba2a723dd5041891c8c1d8b4dbde566;hb=refs%2Fchanges%2F03%2F84703%2F10;hp=3773beee57a3f7c7d88455371dc9e3ee8bf8751f;hpb=81674d6fd50b419b868d0851062e23f34b34557d;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java index 3773beee57..77d2687ccb 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java @@ -7,11 +7,18 @@ */ package org.opendaylight.controller.cluster.datastore.messages; +import static java.util.Objects.requireNonNull; + import com.google.common.base.Preconditions; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.util.Optional; +import java.util.SortedSet; +import java.util.TreeSet; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; +import org.opendaylight.controller.cluster.datastore.DataStoreVersions; import org.opendaylight.controller.cluster.datastore.modification.MutableCompositeModification; /** @@ -27,20 +34,32 @@ public class BatchedModifications extends MutableCompositeModification { private int totalMessagesSent; private TransactionIdentifier transactionId; + private @Nullable SortedSet participatingShardNames; + public BatchedModifications() { } public BatchedModifications(TransactionIdentifier transactionId, short version) { super(version); - this.transactionId = Preconditions.checkNotNull(transactionId, "transactionID can't be null"); + this.transactionId = requireNonNull(transactionId, "transactionID can't be null"); } public boolean isReady() { return ready; } - public void setReady(boolean ready) { - this.ready = ready; + public void setReady(Optional> possibleParticipatingShardNames) { + this.ready = true; + this.participatingShardNames = requireNonNull(possibleParticipatingShardNames).orElse(null); + Preconditions.checkArgument(this.participatingShardNames == null || this.participatingShardNames.size() > 1); + } + + public void setReady() { + setReady(Optional.empty()); + } + + public Optional> getParticipatingShardNames() { + return Optional.ofNullable(participatingShardNames); } public boolean isDoCommitOnReady() { @@ -63,7 +82,6 @@ public class BatchedModifications extends MutableCompositeModification { return transactionId; } - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { super.readExternal(in); @@ -71,6 +89,18 @@ public class BatchedModifications extends MutableCompositeModification { ready = in.readBoolean(); totalMessagesSent = in.readInt(); doCommitOnReady = in.readBoolean(); + + if (getVersion() >= DataStoreVersions.FLUORINE_VERSION) { + final int count = in.readInt(); + if (count != 0) { + SortedSet shardNames = new TreeSet<>(); + for (int i = 0; i < count; i++) { + shardNames.add((String) in.readObject()); + } + + participatingShardNames = shardNames; + } + } } @Override @@ -80,12 +110,24 @@ public class BatchedModifications extends MutableCompositeModification { out.writeBoolean(ready); out.writeInt(totalMessagesSent); out.writeBoolean(doCommitOnReady); + + if (getVersion() >= DataStoreVersions.FLUORINE_VERSION) { + if (participatingShardNames != null) { + out.writeInt(participatingShardNames.size()); + for (String shardName: participatingShardNames) { + out.writeObject(shardName); + } + } else { + out.writeInt(0); + } + } } @Override public String toString() { return "BatchedModifications [transactionId=" + transactionId - + ", ready=" + ready + + ", ready=" + isReady() + + ", participatingShardNames=" + participatingShardNames + ", totalMessagesSent=" + totalMessagesSent + ", modifications size=" + getModifications().size() + "]"; }