From 567f2046f3a15ccd5b9f5e74ec43c103471219a7 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 28 May 2009 06:38:25 +0000
Subject: [PATCH] Fix for 4015 : wrong error messages when replication heart-beat fails

---
 opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java |   21 ++++++++++++---------
 opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java  |   11 ++++++++++-
 opendj-sdk/opends/src/server/org/opends/server/replication/protocol/TLSSocketSession.java |   13 ++++++++++++-
 opendj-sdk/opends/src/server/org/opends/server/replication/protocol/SocketSession.java    |   14 +++++++++++++-
 4 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java
index 0bc3382..6aace54 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ProtocolSession.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.replication.protocol;
 
@@ -147,4 +147,13 @@
    * @return The timestamp in milliseconds of the last message received.
    */
   public abstract long getLastReceiveTime();
+
+  /**
+   * This methods allows to determine if the session close was initiated
+   * on this ProtocolSession.
+   *
+   * @return A boolean allowing to determine if the session close was initiated
+   * on this ProtocolSession.
+   */
+  public abstract boolean closeInitiated();
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/SocketSession.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/SocketSession.java
index dbe3893..e20bffa 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/SocketSession.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/SocketSession.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.replication.protocol;
 
@@ -67,6 +67,8 @@
    */
   private long lastReceiveTime = 0;
 
+  private boolean closeInitiated = false;
+
 
   /**
    * Creates a new SocketSession based on the provided socket.
@@ -90,6 +92,8 @@
    */
   public void close() throws IOException
   {
+    closeInitiated = true;
+
     if (debugEnabled())
     {
       TRACER.debugInfo("Closing SocketSession."
@@ -231,4 +235,12 @@
   {
     socket.setSoTimeout(timeout);
   }
+
+  /**
+   * {@inheritDoc}
+   */
+  public boolean closeInitiated()
+  {
+    return closeInitiated;
+  }
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/TLSSocketSession.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/TLSSocketSession.java
index 60bddea..4eda8e5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/TLSSocketSession.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/TLSSocketSession.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.replication.protocol;
 
@@ -69,6 +69,8 @@
    */
   private long lastReceiveTime = 0;
 
+  private boolean closeInitiated = false;
+
 
   /**
    * Creates a new TLSSocketSession.
@@ -96,6 +98,7 @@
    */
   public void close() throws IOException
   {
+    closeInitiated = true;
     if (debugEnabled())
     {
       TRACER.debugInfo("Closing SocketSession." +
@@ -243,4 +246,12 @@
   {
     plainSocket.setSoTimeout(timeout);
   }
+
+  /**
+   * {@inheritDoc}
+   */
+  public boolean closeInitiated()
+  {
+    return closeInitiated;
+  }
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
index 78a036e..c20eced 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
@@ -1392,14 +1392,17 @@
       {
         if (shutdown == false)
         {
-          Message message =
-            NOTE_DISCONNECTED_FROM_CHANGELOG.get(replicationServer,
-            Short.toString(rsServerId), baseDn.toString(),
-            Short.toString(serverId));
-          logError(message);
-
-          debugInfo("ReplicationBroker.receive() " + baseDn +
-            " Exception raised: " + e.getLocalizedMessage());
+          if (!session.closeInitiated())
+          {
+            /*
+             * If we did not initiate the close on our side, log a message.
+             */
+            Message message =
+              NOTE_DISCONNECTED_FROM_CHANGELOG.get(replicationServer,
+                  Short.toString(rsServerId), baseDn.toString(),
+                  Short.toString(serverId));
+            logError(message);
+          }
           this.reStart(failingSession);
         }
       }
@@ -1613,7 +1616,7 @@
 
   private boolean debugEnabled()
   {
-    return true;
+    return false;
   }
 
   private static final void debugInfo(String s)

--
Gitblit v1.10.0