Fix remaining CS errors in sal-akka-raft and enable enforcement
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / ElectionTerm.java
index 4b0367f0ad1e0e6059db47f372d8b9a79775606c..e8c9b458c6e4e2434b8e9cc4461458a6a93aaf14 100644 (file)
@@ -8,36 +8,48 @@
 
 package org.opendaylight.controller.cluster.raft;
 
-import java.util.concurrent.atomic.AtomicLong;
+import javax.annotation.Nullable;
 
 /**
  * ElectionTerm contains information about a RaftActors election term.
- * <p>
+ * <p/>
  * This information includes the last known current term of the RaftActor
- * and which peer was voted for by the RaftActor in that term
- * <p>
- * This class ensures that election term information is persisted
+ * and which candidate was voted for by the RaftActor in that term.
+ * <p/>
+ * This class ensures that election term information is persisted.
  */
 public interface ElectionTerm {
     /**
-     * latest term server has seen (initialized to 0
-     * on first boot, increases monotonically)
+     * Returns the current leader's Raft term.
+     *
+     * @return the current leader's Raft term.
      */
-    AtomicLong getCurrentTerm();
+    long getCurrentTerm();
 
     /**
-     * candidateId that received vote in current
-     * term (or null if none)
+     * Returns the id of the candidate that this server voted for in current term.
+     *
+     * @return candidate id that received the vote or null if no candidate was voted for.
      */
+    @Nullable
     String getVotedFor();
 
     /**
-     * Called when we need to update the current term either because we received
-     * a message from someone with a more uptodate term or because we just voted
-     * for someone
+     * This method updates the in-memory election term state. This method should be called when recovering election
+     * state from persistent storage.
+     *
+     * @param term the election term.
+     * @param votedFor the candidate id that was voted for.
+     */
+    void update(long term, @Nullable String votedFor);
+
+    /**
+     * This method updates the in-memory election term state and persists it so it can be recovered on next restart.
+     * This method should be called when starting a new election or when a Raft RPC message is received  with a higher
+     * term.
      *
-     * @param currentTerm
-     * @param votedFor
+     * @param term the election term.
+     * @param votedFor the candidate id that was voted for.
      */
-    void update(long currentTerm, String votedFor);
+    void updateAndPersist(long term, @Nullable String votedFor);
 }