X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FReplicatedLog.java;h=71576f6d21b71fd02704e50d74e431f16a641f50;hb=bfe4439155b27fbf9ae300252420c8a81fcbdb80;hp=9e99be118451523153871652b964d7824931c1ad;hpb=8274ae55bc9eba37035a62f49d992f85391524ed;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 9e99be1184..71576f6d21 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 @@ -14,7 +14,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; /** - * Represents the ReplicatedLog that needs to be kept in sync by the RaftActor + * Represents the ReplicatedLog that needs to be kept in sync by the RaftActor. */ public interface ReplicatedLog { long NO_MAX_SIZE = -1; @@ -24,22 +24,30 @@ public interface ReplicatedLog { * * @param index the index of the log entry * @return the ReplicatedLogEntry if found, otherwise null if the adjusted index less than 0 or - * greater than the size of the in-memory journal. + * greater than the size of the in-memory journal */ - @Nullable ReplicatedLogEntry get(long index); + @Nullable + ReplicatedLogEntry get(long index); /** * Return the last replicated log entry in the log or null of not found. + * + * @return the last replicated log entry in the log or null of not found. */ - @Nullable ReplicatedLogEntry last(); + @Nullable + ReplicatedLogEntry last(); /** * Return the index of the last entry in the log or -1 if the log is empty. + * + * @return the index of the last entry in the log or -1 if the log is empty. */ long lastIndex(); /** * Return the term of the last entry in the log or -1 if the log is empty. + * + * @return the term of the last entry in the log or -1 if the log is empty. */ long lastTerm(); @@ -52,21 +60,25 @@ public interface ReplicatedLog { long removeFrom(long index); /** - * Removes entries from the in-memory log a nd the persisted log starting at the given index. + * Removes entries from the in-memory log and the persisted log starting at the given index. + * *
* The persisted information would then be used during recovery to properly
* reconstruct the state of the in-memory replicated log
*
- * @param the index of the first log entry to remove
+ * @param index the index of the first log entry to remove
+ * @return true if entries were removed, false otherwise
*/
- void removeFromAndPersist(long index);
+ boolean removeFromAndPersist(long index);
/**
* Appends an entry to the log.
*
* @param replicatedLogEntry the entry to append
+ * @return true if the entry was successfully appended, false otherwise. An entry can fail to append if
+ * the index is already included in the log.
*/
- void append(ReplicatedLogEntry replicatedLogEntry);
+ boolean append(ReplicatedLogEntry replicatedLogEntry);
/**
* Optimization method to increase the capacity of the journal log prior to appending entries.
@@ -79,10 +91,14 @@ public interface ReplicatedLog {
* Appends an entry to the in-memory log and persists it as well.
*
* @param replicatedLogEntry the entry to append
+ * @param callback the Procedure to be notified when persistence is complete (optional).
+ * @param doAsync if true, the persistent actor can receive subsequent messages to process in between the persist
+ * call and the execution of the associated callback. If false, subsequent messages are stashed and get
+ * delivered after persistence is complete and the associated callback is executed.
+ * @return true if the entry was successfully appended, false otherwise.
*/
- void appendAndPersist(final ReplicatedLogEntry replicatedLogEntry);
-
- void appendAndPersist(ReplicatedLogEntry replicatedLogEntry, Procedure