From faa556c351fae0bf73a939962426876944dddd25 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 03 Jul 2014 10:19:11 +0000
Subject: [PATCH] Code cleanup.

---
 opends/src/server/org/opends/server/replication/server/ServerReader.java |  148 ++++++++++++++++++++++++++----------------------
 1 files changed, 80 insertions(+), 68 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ServerReader.java b/opends/src/server/org/opends/server/replication/server/ServerReader.java
index 6e85261..5684511 100644
--- a/opends/src/server/org/opends/server/replication/server/ServerReader.java
+++ b/opends/src/server/org/opends/server/replication/server/ServerReader.java
@@ -83,7 +83,6 @@
   @Override
   public void run()
   {
-    Message errMessage = null;
     if (debugEnabled())
     {
       TRACER.debugInfo(getName() + " starting");
@@ -93,91 +92,34 @@
      * grab all incoming messages and publish them to the
      * replicationServerDomain
      */
+    Message errMessage = null;
     try
     {
       while (true)
       {
         try
         {
-          ReplicationMsg msg = session.receive();
+          final ReplicationMsg msg = session.receive();
 
           if (debugEnabled())
+          {
             TRACER.debugInfo("In " + getName() + " receives " + msg);
+          }
 
           if (msg instanceof AckMsg)
           {
             handler.checkWindow();
             handler.processAck((AckMsg) msg);
-          } else if (msg instanceof UpdateMsg)
+          }
+          else if (msg instanceof UpdateMsg)
           {
-            UpdateMsg updateMsg = (UpdateMsg) msg;
-
-            boolean filtered = false;
-            // Ignore updates in some cases
-            if (handler.isDataServer())
-            {
-              /**
-               * Ignore updates from DS in bad BAD_GENID_STATUS or
-               * FULL_UPDATE_STATUS
-               *
-               * The RSD lock should not be taken here as it is acceptable to
-               * have a delay between the time the server has a wrong status and
-               * the fact we detect it: the updates that succeed to pass during
-               * this time will have no impact on remote server. But it is
-               * interesting to not saturate uselessly the network if the
-               * updates are not necessary so this check to stop sending updates
-               * is interesting anyway. Not taking the RSD lock allows to have
-               * better performances in normal mode (most of the time).
-               */
-              ServerStatus dsStatus = handler.getStatus();
-              if (dsStatus == BAD_GEN_ID_STATUS
-                  || dsStatus == FULL_UPDATE_STATUS)
-              {
-                long referenceGenerationId = handler.getReferenceGenId();
-                if (dsStatus == BAD_GEN_ID_STATUS)
-                  logError(WARN_IGNORING_UPDATE_FROM_DS_BADGENID.get(
-                      handler.getReplicationServerId(),
-                      updateMsg.getCSN().toString(),
-                      handler.getBaseDNString(), handler.getServerId(),
-                      session.getReadableRemoteAddress(),
-                      handler.getGenerationId(),
-                      referenceGenerationId));
-                if (dsStatus == FULL_UPDATE_STATUS)
-                  logError(WARN_IGNORING_UPDATE_FROM_DS_FULLUP.get(
-                      handler.getReplicationServerId(),
-                      updateMsg.getCSN().toString(),
-                      handler.getBaseDNString(), handler.getServerId(),
-                      session.getReadableRemoteAddress()));
-                filtered = true;
-              }
-            } else
-            {
-              /**
-               * Ignore updates from RS with bad gen id
-               * (no system managed status for a RS)
-               */
-              long referenceGenerationId = handler.getReferenceGenId();
-              if (referenceGenerationId > 0
-                  && referenceGenerationId != handler.getGenerationId())
-              {
-                logError(
-                    WARN_IGNORING_UPDATE_FROM_RS.get(
-                        handler.getReplicationServerId(),
-                        updateMsg.getCSN().toString(),
-                        handler.getBaseDNString(),
-                        handler.getServerId(),
-                        session.getReadableRemoteAddress(),
-                        handler.getGenerationId(),
-                        referenceGenerationId));
-                filtered = true;
-              }
-            }
-
-            if (!filtered)
+            final UpdateMsg updateMsg = (UpdateMsg) msg;
+            if (!isUpdateMsgFiltered(updateMsg))
             {
               handler.put(updateMsg);
             }
-          } else if (msg instanceof WindowMsg)
+          }
+          else if (msg instanceof WindowMsg)
           {
             handler.updateWindow((WindowMsg) msg);
           }
@@ -301,6 +243,76 @@
     }
   }
 
+  /**
+   * Returns whether the update message is filtered in one of those cases:
+   * <ul>
+   * <li>Ignore updates from DS in bad BAD_GENID_STATUS or FULL_UPDATE_STATUS</li>
+   * <li>Ignore updates from RS with bad gen id</li>
+   * </ul>
+   */
+  private boolean isUpdateMsgFiltered(UpdateMsg updateMsg)
+  {
+    if (handler.isDataServer())
+    {
+      /**
+       * Ignore updates from DS in bad BAD_GENID_STATUS or
+       * FULL_UPDATE_STATUS
+       *
+       * The RSD lock should not be taken here as it is acceptable to
+       * have a delay between the time the server has a wrong status and
+       * the fact we detect it: the updates that succeed to pass during
+       * this time will have no impact on remote server. But it is
+       * interesting to not saturate uselessly the network if the
+       * updates are not necessary so this check to stop sending updates
+       * is interesting anyway. Not taking the RSD lock allows to have
+       * better performances in normal mode (most of the time).
+       */
+      final ServerStatus dsStatus = handler.getStatus();
+      if (dsStatus == BAD_GEN_ID_STATUS)
+      {
+        logError(WARN_IGNORING_UPDATE_FROM_DS_BADGENID.get(
+            handler.getReplicationServerId(),
+            updateMsg.getCSN().toString(),
+            handler.getBaseDNString(), handler.getServerId(),
+            session.getReadableRemoteAddress(),
+            handler.getGenerationId(),
+            handler.getReferenceGenId()));
+        return true;
+      }
+      else if (dsStatus == FULL_UPDATE_STATUS)
+      {
+        logError(WARN_IGNORING_UPDATE_FROM_DS_FULLUP.get(
+            handler.getReplicationServerId(),
+            updateMsg.getCSN().toString(),
+            handler.getBaseDNString(), handler.getServerId(),
+            session.getReadableRemoteAddress()));
+        return true;
+      }
+    }
+    else
+    {
+      /**
+       * Ignore updates from RS with bad gen id
+       * (no system managed status for a RS)
+       */
+      long referenceGenerationId = handler.getReferenceGenId();
+      if (referenceGenerationId > 0
+          && referenceGenerationId != handler.getGenerationId())
+      {
+        logError(WARN_IGNORING_UPDATE_FROM_RS.get(
+            handler.getReplicationServerId(),
+            updateMsg.getCSN().toString(),
+            handler.getBaseDNString(),
+            handler.getServerId(),
+            session.getReadableRemoteAddress(),
+            handler.getGenerationId(),
+            referenceGenerationId));
+        return true;
+      }
+    }
+    return false;
+  }
+
   private void logException(Exception e)
   {
     if (debugEnabled())

--
Gitblit v1.10.0