From aea0892feca2fd3d56c9c810debed6d22389454e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 11 Jul 2014 09:54:43 +0000
Subject: [PATCH] OPENDJ-1453 (CR-3938) Replica offline messages should be synced with updates

---
 opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java
index 9171191..e3684be 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java
@@ -44,6 +44,7 @@
 import org.opends.server.types.*;
 import org.forgerock.opendj.ldap.ResultCode;
 import static org.opends.messages.ReplicationMessages.*;
+import static org.opends.server.types.Attributes.*;
 import static org.opends.server.util.StaticUtils.*;
 
 /**
@@ -228,13 +229,10 @@
   public List<Attribute> getMonitorData()
   {
     List<Attribute> attributes = new ArrayList<Attribute>();
-    attributes.add(Attributes.create("handler", getMonitorInstanceName()));
-    attributes.add(
-        Attributes.create("queue-size", String.valueOf(msgQueue.count())));
-    attributes.add(
-        Attributes.create(
-            "queue-size-bytes", String.valueOf(msgQueue.bytesCount())));
-    attributes.add(Attributes.create("following", String.valueOf(following)));
+    attributes.add(create("handler", getMonitorInstanceName()));
+    attributes.add(create("queue-size", String.valueOf(msgQueue.count())));
+    attributes.add(create("queue-size-bytes", String.valueOf(msgQueue.bytesCount())));
+    attributes.add(create("following", String.valueOf(following)));
     return attributes;
   }
 
@@ -419,21 +417,20 @@
    */
   public CSN getOlderUpdateCSN()
   {
-    CSN result = null;
     synchronized (msgQueue)
     {
       if (following)
       {
         if (!msgQueue.isEmpty())
         {
-          result = msgQueue.first().getCSN();
+          return msgQueue.first().getCSN();
         }
       }
       else
       {
         if (!lateQueue.isEmpty())
         {
-          result = lateQueue.first().getCSN();
+          return lateQueue.first().getCSN();
         }
         else
         {
@@ -444,11 +441,11 @@
           the lateQueue when it will send the next update but we are not yet
           there. So let's take the last change not sent directly from the db.
           */
-          result = findOldestCSNFromReplicaDBs();
+          return findOldestCSNFromReplicaDBs();
         }
       }
     }
-    return result;
+    return null;
   }
 
   private CSN findOldestCSNFromReplicaDBs()
@@ -457,10 +454,13 @@
     try
     {
       cursor = replicationServerDomain.getCursorFrom(serverState);
-      cursor.next();
-      if (cursor.getRecord() != null)
+      while (cursor.next())
       {
-        return cursor.getRecord().getCSN();
+        final UpdateMsg record = cursor.getRecord();
+        if (record.contributesToDomainState())
+        {
+          return record.getCSN();
+        }
       }
       return null;
     }

--
Gitblit v1.10.0