From 7a3e37d3c720eea18a620fe19a8e94ae299ea0a6 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Tue, 02 Dec 2014 15:56:35 +0000
Subject: [PATCH] OPENDJ-1611 Check serverState before returning a message

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/MessageHandler.java          |   13 +++++++++----
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java |    9 +--------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/MessageHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/MessageHandler.java
index ac7ce11..fe69dda 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/MessageHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/MessageHandler.java
@@ -329,8 +329,10 @@
                 following = true;
                 lateQueue.clear();
                 msgQueue.consumeUpTo(msg);
-                updateServerState(msg);
-                return msg;
+                if (updateServerState(msg))
+                {
+                  return msg;
+                }
               }
             }
           }
@@ -343,8 +345,11 @@
           {
             msg = lateQueue.removeFirst();
           }
-          updateServerState(msg);
-          return msg;
+          if (updateServerState(msg))
+          {
+            return msg;
+          }
+          continue;
         }
       }
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 34727a4..31f56ed 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -35,7 +35,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.ConcurrentHashMap;
@@ -1294,13 +1293,7 @@
   public UpdateMsg take(ServerHandler sHandler)
   {
     // Next message can only be taken from connected DSs
-    final Set<Integer> connectedReplicaIds = new HashSet<Integer>(getConnectedDSs().keySet());
-    if (sHandler.isDataServer())
-    {
-      // Prevents sending to a DS its own messages
-      connectedReplicaIds.remove(sHandler.getServerId());
-    }
-    return sHandler.take(connectedReplicaIds);
+    return sHandler.take(new HashSet<Integer>(getConnectedDSs().keySet()));
   }
 
   /**

--
Gitblit v1.10.0