From 4b8038247ef707bb6b31df540318c3d20067af26 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 03 Jan 2014 10:04:04 +0000
Subject: [PATCH] OPENDJ-1205 Remove network layer from External ChangeLog implementation

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java    |   18 ++++++++
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java     |   23 ++---------
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java |    5 +-
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java  |   51 ++++++-------------------
 4 files changed, 36 insertions(+), 61 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
index 05fdea5..b3cbf15 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2009-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2010-2013 ForgeRock AS
+ *      Portions Copyright 2010-2014 ForgeRock AS
  */
 package org.opends.server.replication.server;
 
@@ -1118,6 +1118,7 @@
    */
   public ECLUpdateMsg takeECLUpdate() throws DirectoryException
   {
+    refreshEligibleCSN();
     ECLUpdateMsg msg = getNextECLUpdate();
 
     // TODO:ECL We should refactor so that a SH always have a session
@@ -1509,7 +1510,7 @@
   /**
    * Refresh the eligibleCSN by requesting the replication server.
    */
-  public void refreshEligibleCSN()
+  private void refreshEligibleCSN()
   {
     eligibleCSN = replicationServer.getEligibleCSN(excludedBaseDNs);
   }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java
index a16fd78..eca578e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java
@@ -22,14 +22,13 @@
  *
  *
  *      Copyright 2009 Sun Microsystems, Inc.
- *      Portions copyright 2011-2013 ForgeRock AS
+ *      Portions copyright 2011-2014 ForgeRock AS
  */
 package org.opends.server.replication.server;
 
 import java.io.IOException;
 import java.net.SocketException;
 
-import org.opends.messages.Message;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.PersistentSearch;
 import org.opends.server.loggers.debug.DebugTracer;
@@ -59,11 +58,11 @@
    */
   private static final DebugTracer TRACER = getTracer();
 
-  private Session session;
-  private ECLServerHandler handler;
-  private ReplicationServerDomain replicationServerDomain;
+  private final Session session;
+  private final ECLServerHandler handler;
+  private final ReplicationServerDomain replicationServerDomain;
   private boolean suspended;
-  private boolean shutdown;
+  private volatile boolean shutdown;
   private PersistentSearch mypsearch;
 
   /**
@@ -111,10 +110,7 @@
    */
   public synchronized void suspendWriter()
   {
-    synchronized(this)
-    {
-      suspended = true;
-    }
+    suspended = true;
   }
 
   /**
@@ -122,10 +118,7 @@
    */
   public synchronized void resumeWriter()
   {
-    synchronized(this)
-    {
-      suspended = false;
-    }
+    suspended = false;
     notify();
   }
 
@@ -168,33 +161,15 @@
       // session is always null if a socket exception has occurred.
       if (session != null)
       {
-        final Message errMessage;
-        if (handler.isDataServer())
-        {
-          errMessage = ERR_DS_BADLY_DISCONNECTED.get(
-              handler.getReplicationServerId(),
-              handler.getServerId(),
-              session.getReadableRemoteAddress(),
-              handler.getBaseDNString());
-        }
-        else
-        {
-          errMessage = ERR_RS_BADLY_DISCONNECTED.get(
-              handler.getReplicationServerId(),
-              handler.getServerId(),
-              session.getReadableRemoteAddress(),
-              handler.getBaseDNString());
-        }
-        logError(errMessage);
+        logError(handler.getBadlyDisconnectedErrorMessage());
       }
     }
     catch (Exception e)
     {
       // An unexpected error happened.
       // Log an error and close the connection.
-      Message errMessage = ERR_WRITER_UNEXPECTED_EXCEPTION
-          .get(handler + " " + stackTraceToSingleLineString(e));
-      logError(errMessage);
+      logError(ERR_WRITER_UNEXPECTED_EXCEPTION.get(
+          handler + " " + stackTraceToSingleLineString(e)));
     }
     finally
     {
@@ -225,7 +200,6 @@
       ECLUpdateMsg update = null;
       try
       {
-        handler.refreshEligibleCSN();
         update = handler.takeECLUpdate();
       }
       catch(DirectoryException de)
@@ -292,9 +266,8 @@
       }
       catch (Exception e)
       {
-        Message errMessage = ERR_WRITER_UNEXPECTED_EXCEPTION.get(
-            handler + " " + stackTraceToSingleLineString(e));
-        logError(errMessage);
+        logError(ERR_WRITER_UNEXPECTED_EXCEPTION.get(
+            handler + " " + stackTraceToSingleLineString(e)));
         mypsearch.cancel();
       }
     }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java
index 774c0e9..c7efe83 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2006-2010 Sun Microsystems, Inc.
- *      Portions copyright 2011-2013 ForgeRock AS
+ *      Portions copyright 2011-2014 ForgeRock AS
  */
 package org.opends.server.replication.server;
 
@@ -1240,4 +1240,20 @@
         sslEncryption, getLocalGroupId(),
         replicationServer.getDegradedStatusThreshold());
   }
+
+  /**
+   * Returns a "badly disconnected" error message for this server handler.
+   *
+   * @return a "badly disconnected" error message for this server handler
+   */
+  public Message getBadlyDisconnectedErrorMessage()
+  {
+    if (isDataServer())
+    {
+      return ERR_DS_BADLY_DISCONNECTED.get(getReplicationServerId(),
+          getServerId(), session.getReadableRemoteAddress(), getBaseDNString());
+    }
+    return ERR_RS_BADLY_DISCONNECTED.get(getReplicationServerId(),
+        getServerId(), session.getReadableRemoteAddress(), getBaseDNString());
+  }
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java
index 9f31cd2..06a75cf 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java
@@ -22,11 +22,11 @@
  *
  *
  *      Copyright 2006-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2011-2013 ForgeRock AS
+ *      Portions Copyright 2011-2014 ForgeRock AS
  */
 package org.opends.server.replication.server;
 
-import java.io.IOException;
+import java.net.SocketException;
 
 import org.opends.messages.Message;
 import org.opends.server.api.DirectoryThread;
@@ -59,9 +59,6 @@
   private static final DebugTracer TRACER = getTracer();
   private final Session session;
   private final ServerHandler handler;
-  private final String remoteAddress;
-
-
 
   /**
    * Constructor for the LDAP server reader part of the replicationServer.
@@ -78,7 +75,6 @@
         + session.getReadableRemoteAddress());
     this.session = session;
     this.handler = handler;
-    this.remoteAddress = session.getReadableRemoteAddress();
   }
 
   /**
@@ -247,7 +243,7 @@
         }
       }
     }
-    catch (IOException e)
+    catch (SocketException e)
     {
       /*
        * The connection has been broken
@@ -257,18 +253,7 @@
       logException(e);
       if (!handler.shuttingDown())
       {
-        if (handler.isDataServer())
-        {
-          errMessage = ERR_DS_BADLY_DISCONNECTED.get(
-              handler.getReplicationServerId(), handler.getServerId(),
-              remoteAddress, handler.getBaseDNString());
-        }
-        else
-        {
-          errMessage = ERR_RS_BADLY_DISCONNECTED.get(
-              handler.getReplicationServerId(), handler.getServerId(),
-              remoteAddress, handler.getBaseDNString());
-        }
+        errMessage = handler.getBadlyDisconnectedErrorMessage();
         logError(errMessage);
       }
     }

--
Gitblit v1.10.0