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=8cf133c2ab73ba2c62a9b177d3ea26d802e06abe;hb=ebb756e983e44035641b0e890ca6baa96e34c6dd;hp=73ab6ea66cfcbd04e835edf18f7e2210c5795b65;hpb=b0f8283587b5cc8573d29f66219cbe7f70e21e1b;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 73ab6ea66c..8cf133c2ab 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 @@ -5,13 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.cluster.raft; -import akka.japi.Procedure; import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import java.util.function.Consumer; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; /** * Represents the ReplicatedLog that needs to be kept in sync by the RaftActor. @@ -26,16 +25,14 @@ public interface ReplicatedLog { * @return the ReplicatedLogEntry if found, otherwise null if the adjusted index less than 0 or * 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. @@ -61,7 +58,8 @@ public interface ReplicatedLog { /** * 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
*
@@ -90,16 +88,15 @@ 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 callback 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. In either case the
+ * callback is guaranteed to execute in the context of the actor associated with this log.
+ * @return true if the entry was successfully appended, false otherwise.
*/
- void appendAndPersist(final ReplicatedLogEntry replicatedLogEntry);
-
- /**
- * 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.
- */
- void appendAndPersist(ReplicatedLogEntry replicatedLogEntry, Procedure