package org.opendaylight.controller.cluster.raft.messages;
+import com.google.common.base.Preconditions;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.List;
+import javax.annotation.Nonnull;
import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry;
-import org.opendaylight.controller.cluster.raft.ReplicatedLogImplEntry;
+import org.opendaylight.controller.cluster.raft.persisted.SimpleReplicatedLogEntry;
import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
/**
private final long prevLogTerm;
// log entries to store (empty for heart beat - may send more than one for efficiency)
- private transient List<ReplicatedLogEntry> entries;
+ private final List<ReplicatedLogEntry> entries;
// leader's commitIndex
private final long leaderCommit;
private final short payloadVersion;
- public AppendEntries(long term, String leaderId, long prevLogIndex, long prevLogTerm,
- List<ReplicatedLogEntry> entries, long leaderCommit, long replicatedToAllIndex, short payloadVersion) {
+ public AppendEntries(long term, @Nonnull String leaderId, long prevLogIndex, long prevLogTerm,
+ @Nonnull List<ReplicatedLogEntry> entries, long leaderCommit, long replicatedToAllIndex,
+ short payloadVersion) {
super(term);
- this.leaderId = leaderId;
+ this.leaderId = Preconditions.checkNotNull(leaderId);
this.prevLogIndex = prevLogIndex;
this.prevLogTerm = prevLogTerm;
- this.entries = entries;
+ this.entries = Preconditions.checkNotNull(entries);
this.leaderCommit = leaderCommit;
this.replicatedToAllIndex = replicatedToAllIndex;
this.payloadVersion = payloadVersion;
}
+ @Nonnull
public String getLeaderId() {
return leaderId;
}
return prevLogTerm;
}
+ @Nonnull
public List<ReplicatedLogEntry> getEntries() {
return entries;
}
@Override
public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("AppendEntries [leaderId=").append(leaderId).append(", prevLogIndex=").append(prevLogIndex)
- .append(", prevLogTerm=").append(prevLogTerm).append(", leaderCommit=").append(leaderCommit)
- .append(", replicatedToAllIndex=").append(replicatedToAllIndex).append(", payloadVersion=")
- .append(payloadVersion).append(", entries=").append(entries).append("]");
- return builder.toString();
+ return "AppendEntries [leaderId=" + leaderId
+ + ", prevLogIndex=" + prevLogIndex
+ + ", prevLogTerm=" + prevLogTerm
+ + ", leaderCommit=" + leaderCommit
+ + ", replicatedToAllIndex=" + replicatedToAllIndex
+ + ", payloadVersion=" + payloadVersion
+ + ", entries=" + entries + "]";
}
private Object writeReplace() {
int size = in.readInt();
List<ReplicatedLogEntry> entries = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
- entries.add(new ReplicatedLogImplEntry(in.readLong(), in.readLong(), (Payload) in.readObject()));
+ entries.add(new SimpleReplicatedLogEntry(in.readLong(), in.readLong(), (Payload) in.readObject()));
}
appendEntries = new AppendEntries(term, leaderId, prevLogIndex, prevLogTerm, entries, leaderCommit,