From 020a870af63f7407d3145feb74351bee3c2ce837 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 17 Dec 2013 11:08:12 +0000
Subject: [PATCH] OPENDJ-1231 (CR-2724) Make the Medium Consistency Point support replica heartbeats and replicas shutting down

---
 opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java |   62 +++---------------------------
 1 files changed, 7 insertions(+), 55 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 91e799a..70ee7cd 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -167,8 +167,6 @@
    */
   private int assuredTimeoutTimerPurgeCounter = 0;
 
-  private ServerState ctHeartbeatState;
-
   /**
    * Creates a new ReplicationServerDomain associated to the baseDN.
    *
@@ -2558,19 +2556,6 @@
   }
 
   /**
-   * Return the state that contain for each server the time of eligibility.
-   * @return the state.
-   */
-  public ServerState getChangeTimeHeartbeatState()
-  {
-    if (ctHeartbeatState == null)
-    {
-      ctHeartbeatState = getLatestServerState().duplicate();
-    }
-    return ctHeartbeatState;
-  }
-
-  /**
    * Returns the oldest known state for the domain, made of the oldest CSN
    * stored for each serverId.
    * <p>
@@ -2593,31 +2578,13 @@
    *
    * @return the eligible CSN.
    */
-  public CSN getEligibleCSN()
+  CSN getEligibleCSN()
   {
     CSN eligibleCSN = null;
-
-    final ServerState newestCSNs = domainDB.getDomainNewestCSNs(baseDN);
-    for (final CSN replicaNewestCSN : newestCSNs)
+    for (final CSN lastAliveCSN : domainDB.getDomainLastAliveCSNs(baseDN))
     {
       // Should it be considered for eligibility ?
-      int serverId = replicaNewestCSN.getServerId();
-      CSN heartbeatLastCSN = getChangeTimeHeartbeatState().getCSN(serverId);
-
-      // If the most recent UpdateMsg or CLHeartbeatMsg received is very old
-      // then the domain is considered down and not considered for eligibility
-      /*
-      if ((heartbeatLastDN != null) &&
-          (TimeThread.getTime()- heartbeatLastDN.getTime() > 5000))
-      {
-        if (debugEnabled())
-          TRACER.debugInfo("In " + this.getName() +
-            " Server " + sid
-            + " is not considered for eligibility ... potentially down");
-        continue;
-      }
-      */
-
+      final int serverId = lastAliveCSN.getServerId();
       if (!isServerConnected(serverId))
       {
         if (debugEnabled())
@@ -2628,13 +2595,9 @@
         continue;
       }
 
-      if (eligibleCSN == null || replicaNewestCSN.isNewerThan(eligibleCSN))
+      if (eligibleCSN == null || lastAliveCSN.isNewerThan(eligibleCSN))
       {
-        eligibleCSN = replicaNewestCSN;
-      }
-      if (heartbeatLastCSN != null && heartbeatLastCSN.isNewerThan(eligibleCSN))
-      {
-        eligibleCSN = heartbeatLastCSN;
+        eligibleCSN = lastAliveCSN;
       }
     }
 
@@ -2671,7 +2634,7 @@
    * @param msg The message to process.
    */
   public void processChangeTimeHeartbeatMsg(ServerHandler senderHandler,
-      ChangeTimeHeartbeatMsg msg )
+      ChangeTimeHeartbeatMsg msg)
   {
     try
     {
@@ -2689,7 +2652,7 @@
 
     try
     {
-      storeReceivedCTHeartbeat(msg.getCSN());
+      domainDB.replicaHeartbeat(baseDN, msg.getCSN());
       if (senderHandler.isDataServer())
       {
         // If we are the first replication server warned,
@@ -2722,17 +2685,6 @@
   }
 
   /**
-   * Store a change time value received from a data server.
-   * @param csn The provided change time.
-   */
-  public void storeReceivedCTHeartbeat(CSN csn)
-  {
-    // TODO:Maybe we can spare processing by only storing CSN (timestamp)
-    // instead of a server state.
-    getChangeTimeHeartbeatState().update(csn);
-  }
-
-  /**
    * This methods count the changes, server by server :
    * - from a serverState start point
    * - to (inclusive) an end point (the provided endCSN).

--
Gitblit v1.10.0