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/DbHandler.java |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
index 43cdff7..cfb83e4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -466,6 +466,13 @@
 
     ChangeNumber trimDate = new ChangeNumber(latestTrimDate, 0, 0);
 
+    // Find the last changeNumber before the trimDate, in the Database.
+    ChangeNumber lastBeforeTrimDate = db.getPreviousChangeNumber(trimDate);
+    if (lastBeforeTrimDate != null)
+    {
+      // If we found it, we want to stop trimming when reaching it.
+      trimDate = lastBeforeTrimDate;
+    }
     // In case of deadlock detection by the Database, this thread can
     // by aborted by a DeadlockException. This is a transient error and
     // the transaction should be attempted again.

--
Gitblit v1.10.0