From d1465691c70a578c22f2d0d5e0efc812bcdfc4e8 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Fri, 02 Nov 2007 15:09:28 +0000
Subject: [PATCH] Fix 2520 - Notice : Directory server has disconnected  - Make the heartbeat monitor to fail after 2 consecutive period with no heartbeat detected

---
 opends/src/server/org/opends/server/replication/plugin/HeartbeatMonitor.java |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/plugin/HeartbeatMonitor.java b/opends/src/server/org/opends/server/replication/plugin/HeartbeatMonitor.java
index f4896f8..94a2f7d 100644
--- a/opends/src/server/org/opends/server/replication/plugin/HeartbeatMonitor.java
+++ b/opends/src/server/org/opends/server/replication/plugin/HeartbeatMonitor.java
@@ -101,6 +101,7 @@
   @Override
   public void run()
   {
+    boolean gotOneFailure = false;
     if (debugEnabled())
     {
       TRACER.debugInfo("Heartbeat monitor is starting, expected interval is " +
@@ -113,13 +114,24 @@
       {
         long now = System.currentTimeMillis();
         long lastReceiveTime = session.getLastReceiveTime();
-        if (now > lastReceiveTime + 2 * heartbeatInterval)
+        if (now > lastReceiveTime + heartbeatInterval)
         {
-          // Heartbeat is well overdue so the server is assumed to be dead.
-          logError(NOTE_HEARTBEAT_FAILURE.get(currentThread().getName()));
-          session.close();
+          if (gotOneFailure == true)
+          {
+            // Heartbeat is well overdue so the server is assumed to be dead.
+            logError(NOTE_HEARTBEAT_FAILURE.get(currentThread().getName()));
+            session.close();
+          }
+          else
+          {
+            gotOneFailure = true;
+          }
           break;
         }
+        else
+        {
+          gotOneFailure = false;
+        }
         try
         {
           Thread.sleep(heartbeatInterval);

--
Gitblit v1.10.0