X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fmessages%2FBatchedModifications.java;h=4e7b40ab1f1393cc762ee636479cce2168969c3b;hb=HEAD;hp=a9ce94b033b26690b7e49017c36a2e24abbd0f3c;hpb=edcc020c8fda4b13f22a31d79c13feef0b53b0ee;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 a9ce94b033..4e7b40ab1f 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,10 +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; /** @@ -18,64 +26,111 @@ import org.opendaylight.controller.cluster.datastore.modification.MutableComposi * * @author Thomas Pantelis */ -public class BatchedModifications extends MutableCompositeModification implements SerializableMessage { +@Deprecated(since = "9.0.0", forRemoval = true) +public final class BatchedModifications extends MutableCompositeModification { + @java.io.Serial private static final long serialVersionUID = 1L; private boolean ready; - private String transactionID; - private String transactionChainID; + private boolean doCommitOnReady; + private int totalMessagesSent; + private TransactionIdentifier transactionId; + + private @Nullable SortedSet participatingShardNames; public BatchedModifications() { } - public BatchedModifications(String transactionID, short version, String transactionChainID) { + public BatchedModifications(final TransactionIdentifier transactionId, final short version) { super(version); - this.transactionID = Preconditions.checkNotNull(transactionID, "transactionID can't be null"); - this.transactionChainID = transactionChainID != null ? transactionChainID : ""; + 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(final Optional> possibleParticipatingShardNames) { + ready = true; + participatingShardNames = requireNonNull(possibleParticipatingShardNames).orElse(null); + Preconditions.checkArgument(participatingShardNames == null || participatingShardNames.size() > 1); + } + + public void setReady() { + setReady(Optional.empty()); + } + + public Optional> getParticipatingShardNames() { + return Optional.ofNullable(participatingShardNames); + } + + public boolean isDoCommitOnReady() { + return doCommitOnReady; } - public String getTransactionID() { - return transactionID; + public void setDoCommitOnReady(final boolean doCommitOnReady) { + this.doCommitOnReady = doCommitOnReady; } - public String getTransactionChainID() { - return transactionChainID; + public int getTotalMessagesSent() { + return totalMessagesSent; + } + + public void setTotalMessagesSent(final int totalMessagesSent) { + this.totalMessagesSent = totalMessagesSent; + } + + public TransactionIdentifier getTransactionId() { + return transactionId; } @Override - public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { super.readExternal(in); - transactionID = in.readUTF(); - transactionChainID = in.readUTF(); + transactionId = TransactionIdentifier.readFrom(in); 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 - public void writeExternal(ObjectOutput out) throws IOException { + public void writeExternal(final ObjectOutput out) throws IOException { super.writeExternal(out); - out.writeUTF(transactionID); - out.writeUTF(transactionChainID); + transactionId.writeTo(out); out.writeBoolean(ready); - } + out.writeInt(totalMessagesSent); + out.writeBoolean(doCommitOnReady); - @Override - public Object toSerializable() { - return this; + 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() { - StringBuilder builder = new StringBuilder(); - builder.append("BatchedModifications [transactionID=").append(transactionID).append(", ready=").append(ready) - .append(", modifications size=").append(getModifications().size()).append("]"); - return builder.toString(); + return "BatchedModifications [transactionId=" + transactionId + + ", ready=" + isReady() + + ", participatingShardNames=" + participatingShardNames + + ", totalMessagesSent=" + totalMessagesSent + + ", modifications size=" + getModifications().size() + "]"; } }