From bfef6b181cc5271d8f706c576f2bcd29d3345bf9 Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Mon, 30 May 2011 15:20:19 +0000
Subject: [PATCH] Resolve several issues with the External Changelog with regards to Cookies and changes with updates and purging. More specifically these changes are resolving the following issues : OPENDJ-57 - ECL: lastChangeNumber and firstChangeNumber reset to zero when the changelog is purged to empty OPENDJ-172 - External ChangeLog Cookie varies when searching with an empty cookie. Cookie should be reproducible. OPENDJ-173 - External ChangeLog cookies content is altered by Change purging and prevents from continuing search with a previous returned cookie.
---
opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java
index dcf15e6..ef4df7c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java
@@ -389,18 +389,22 @@
// We don't use the returned endState but it's updating CN as
// reading
- domain.getEligibleState(crossDomainEligibleCN, false);
+ domain.getEligibleState(crossDomainEligibleCN);
ChangeNumber fcn = startState.getMaxChangeNumber(
cn.getServerId());
- if (cn.older(fcn))
+ int currentKey = cursor.currentKey();
+ // Do not delete the lastKey. This should allow us to
+ // preserve last change number over time.
+ if ((currentKey != lastkey) && (cn.older(fcn)))
{
size++;
cursor.delete();
}
else
{
+ firstkey = currentKey;
finished = true;
}
}
--
Gitblit v1.10.0