X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FReplicatedLog.java;h=7ee85322a60f9ec93a4effc6e9379bd52d77a6ed;hb=d7ce37f576bcf35aa29665db89cadf854487f338;hp=e2f4bdbeb6e235580dc7d0d6be3c8990997f0989;hpb=cf5be659d906cc80d52647cb516bbab435156742;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java index e2f4bdbeb6..7ee85322a6 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java @@ -8,6 +8,8 @@ package org.opendaylight.controller.cluster.raft; +import java.util.List; + /** * Represents the ReplicatedLog that needs to be kept in sync by the RaftActor */ @@ -15,10 +17,11 @@ public interface ReplicatedLog { /** * Get a replicated log entry at the specified index * - * @param index - * @return + * @param index the index of the log entry + * @return the ReplicatedLogEntry at index. null if index less than 0 or + * greater than the size of the in-memory journal. */ - ReplicatedLogEntry getReplicatedLogEntry(long index); + ReplicatedLogEntry get(long index); /** @@ -27,4 +30,145 @@ public interface ReplicatedLog { * @return */ ReplicatedLogEntry last(); + + /** + * + * @return + */ + long lastIndex(); + + /** + * + * @return + */ + long lastTerm(); + + /** + * To be called when we need to remove entries from the in-memory log. + * This method will remove all entries >= index. This method should be used + * during recovery to appropriately trim the log based on persisted + * information + * + * @param index the index of the log entry + */ + void removeFrom(long index); + + + /** + * To be called when we need to remove entries from the in-memory log and we + * need that information persisted to disk. This method will remove all + * entries >= index. + *
+ * The persisted information would then be used during recovery to properly
+ * reconstruct the state of the in-memory replicated log
+ *
+ * @param index the index of the log entry
+ */
+ void removeFromAndPersist(long index);
+
+ /**
+ * Append an entry to the log
+ * @param replicatedLogEntry
+ */
+ void append(ReplicatedLogEntry replicatedLogEntry);
+
+ /**
+ * Optimization method to increase the capacity of the journal log prior to appending entries.
+ *
+ * @param amount the amount to increase by
+ */
+ void increaseJournalLogCapacity(int amount);
+
+ /**
+ *
+ * @param replicatedLogEntry
+ */
+ void appendAndPersist(final ReplicatedLogEntry replicatedLogEntry);
+
+ /**
+ *
+ * @param index the index of the log entry
+ */
+ List