From 06114fba6a18eab64d6a6371a1c3966f387aff5a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 17 Sep 2013 08:46:28 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java         |   11 ++++++-----
 opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbIterator.java |   11 +++++++----
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java
index dd878d9..aa4c1a7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java
@@ -31,7 +31,6 @@
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
-import org.opends.messages.Message;
 import org.opends.messages.MessageBuilder;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.replication.server.changelog.api.CNIndexRecord;
@@ -398,10 +397,12 @@
             // We could not move the cursor to the expected startChangeNumber
             if (localCursor.getSearchKeyRange(key, entry, DEFAULT) != SUCCESS)
             {
-              // We could not even move the cursor close to it => failure
-              throw new ChangelogException(
-                  Message.raw("ChangeLog Change Number " + startChangeNumber
-                      + " is not available"));
+              // We could not even move the cursor close to it
+              // => return an empty cursor
+              isClosed = true;
+              txn = null;
+              cursor = null;
+              return;
             }
 
             if (localCursor.getPrev(key, entry, LockMode.DEFAULT) != SUCCESS)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbIterator.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbIterator.java
index ab7a5e7..f1ace74 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbIterator.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbIterator.java
@@ -29,8 +29,10 @@
 
 import org.opends.messages.Message;
 import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.replication.server.changelog.api.*;
-import org.opends.server.replication.server.changelog.je.DraftCNDB.*;
+import org.opends.server.replication.server.changelog.api.CNIndexRecord;
+import org.opends.server.replication.server.changelog.api.ChangeNumberIndexDBCursor;
+import org.opends.server.replication.server.changelog.api.ChangelogException;
+import org.opends.server.replication.server.changelog.je.DraftCNDB.DraftCNDBCursor;
 import org.opends.server.types.DebugLogLevel;
 
 import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -59,9 +61,10 @@
       throws ChangelogException
   {
     draftCNDbCursor = db.openReadCursor(startChangeNumber);
-    if (draftCNDbCursor == null)
+    if (draftCNDbCursor.currentRecord() == null)
     {
-      throw new ChangelogException(Message.raw("no new change"));
+      throw new ChangelogException(Message.raw("Change Number "
+          + startChangeNumber + " is not available in the Changelog"));
     }
   }
 

--
Gitblit v1.10.0