From f7f439300fb47d381b9e14fd5b4a550fba08d2e3 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Thu, 27 May 2010 09:24:42 +0000
Subject: [PATCH] Fix for issue with ECL in cookie mode: when building lastExternalChangelogCookie, we must ignore changes older than the purge date.
---
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java | 26 ++++++++++++++++++++++++--
1 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 1cefe98..46a9031 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -3119,10 +3119,13 @@
*
* The eligibleState is : s1;cn14 / s2;cn26 / s3;cn31
*
- * @param eligibleCN The provided eligibleCN.
+ * @param eligibleCN The provided eligibleCN.
+ * @param allowOlderThanPurgeDate When true, the returned state can be older
+ * than the purge date of the domain.
* @return The computed eligible server state.
*/
- public ServerState getEligibleState(ChangeNumber eligibleCN)
+ public ServerState getEligibleState(ChangeNumber eligibleCN,
+ boolean allowOlderThanPurgeDate)
{
ServerState result = new ServerState();
@@ -3188,6 +3191,25 @@
}
}
}
+
+ if (allowOlderThanPurgeDate == false)
+ {
+ boolean domainPurged = true;
+ long latestDomainTrimDate = getLatestDomainTrimDate();
+ Iterator<Integer> it = result.iterator();
+ while (it.hasNext())
+ {
+ int sid = it.next();
+ ChangeNumber cn = result.getMaxChangeNumber(sid);
+ if ((cn.getTime()>0) && (cn.getTime()<latestDomainTrimDate))
+ result.update(new ChangeNumber(0,0,sid));
+ else
+ domainPurged = false;
+ }
+ if (domainPurged == true)
+ result.clear();
+ }
+
if (debugEnabled())
TRACER.debugInfo("In " + this
+ " getEligibleState() result is " + result);
--
Gitblit v1.10.0