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