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