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%2FSnapshotState.java;h=0a702741d8894ceb46386fba63d28ca39e1e51af;hb=bfe4439155b27fbf9ae300252420c8a81fcbdb80;hp=5d1304fe752222214a82b9d877da996dc517feb4;hpb=24ace09aacc620fd9768e0a7004e802f9385bcfc;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotState.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotState.java index 5d1304fe75..0a702741d8 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotState.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotState.java @@ -8,31 +8,40 @@ package org.opendaylight.controller.cluster.raft; +import java.io.OutputStream; +import java.util.Optional; import org.opendaylight.controller.cluster.raft.base.messages.ApplySnapshot; +import org.opendaylight.controller.cluster.raft.persisted.Snapshot; +/** + * Interface for a snapshot phase state. + * + * @author Moiz Raja + * @author Thomas Pantelis + */ public interface SnapshotState { /** - * @return true when a snapshot is being captured + * Returns whether or not a capture is in progress. + * + * @return true when a snapshot is being captured, false otherwise */ boolean isCapturing(); /** - * Initiate capture snapshot + * Initiates a capture snapshot. * * @param lastLogEntry the last entry in the replicated log * @param replicatedToAllIndex the current replicatedToAllIndex - * * @return true if capture was started */ boolean capture(ReplicatedLogEntry lastLogEntry, long replicatedToAllIndex); /** - * Initiate capture snapshot for the purposing of installing that snapshot - * - * @param lastLogEntry - * @param replicatedToAllIndex - * @param targetFollower + * Initiates a capture snapshot for the purposing of installing the snapshot on a follower. * + * @param lastLogEntry the last entry in the replicated log + * @param replicatedToAllIndex the current replicatedToAllIndex + * @param targetFollower the id of the follower on which to install * @return true if capture was started */ boolean captureToInstall(ReplicatedLogEntry lastLogEntry, long replicatedToAllIndex, String targetFollower); @@ -45,30 +54,32 @@ public interface SnapshotState { void apply(ApplySnapshot snapshot); /** - * Persist the snapshot + * Persists a snapshot. * - * @param snapshotBytes - * @param currentBehavior - * @param totalMemory + * @param snapshotState the snapshot State + * @param installSnapshotStream Optional OutputStream that is present if the snapshot is to also be installed + * on a follower. + * @param totalMemory the total memory threshold */ - void persist(byte[] snapshotBytes, long totalMemory); + void persist(Snapshot.State snapshotState, Optional installSnapshotStream, long totalMemory); /** - * Commit the snapshot by trimming the log + * Commit the snapshot by trimming the log. * - * @param sequenceNumber + * @param sequenceNumber the sequence number of the persisted snapshot + * @param timeStamp the time stamp of the persisted snapshot */ - void commit(long sequenceNumber); + void commit(long sequenceNumber, long timeStamp); /** - * Rollback the snapshot + * Rolls back the snapshot on failure. */ void rollback(); /** - * Trim the log + * Trims the in-memory log. * - * @param desiredTrimIndex + * @param desiredTrimIndex the desired index to trim from * @return the actual trim index */ long trimLog(long desiredTrimIndex);