From bd3c137fd2e1fa9e13289ab0573e07f9a4212e05 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 30 Aug 2013 09:56:47 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB
---
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java | 48 +++++++++++++++++++++++++-----------------------
1 files changed, 25 insertions(+), 23 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 f428023..c88e37c 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -47,8 +47,9 @@
import org.opends.server.replication.common.*;
import org.opends.server.replication.protocol.*;
import org.opends.server.replication.server.changelog.api.ChangelogException;
-import org.opends.server.replication.server.changelog.api.ReplicationIterator;
+import org.opends.server.replication.server.changelog.api.ReplicationDBCursor;
import org.opends.server.replication.server.changelog.je.DbHandler;
+import org.opends.server.replication.server.changelog.je.ReplicationDB;
import org.opends.server.types.*;
import static org.opends.messages.ReplicationMessages.*;
@@ -1262,17 +1263,18 @@
}
/**
- * Creates and returns an iterator.
- * When the iterator is not used anymore, the caller MUST call the
- * ReplicationIterator.releaseCursor() method to free the resources
- * and locks used by the ReplicationIterator.
- *
- * @param serverId Identifier of the server for which the iterator is created.
- * @param startAfterCN Starting point for the iterator.
- * @return the created ReplicationIterator. Null when no DB is available
- * for the provided server Id.
- */
- public ReplicationIterator getChangelogIterator(int serverId,
+ * Creates and returns a cursor. When the cursor is not used anymore, the
+ * caller MUST call the {@link ReplicationDBCursor#close()} method to free the
+ * resources and locks used by the cursor.
+ *
+ * @param serverId
+ * Identifier of the server for which the cursor is created.
+ * @param startAfterCN
+ * Starting point for the cursor.
+ * @return the created {@link ReplicationDB}. Null when no DB is available or
+ * the DB is empty for the provided serverId .
+ */
+ public ReplicationDBCursor getCursorFrom(int serverId,
ChangeNumber startAfterCN)
{
DbHandler dbHandler = sourceDbHandlers.get(serverId);
@@ -1281,29 +1283,29 @@
return null;
}
- ReplicationIterator it;
+ ReplicationDBCursor cursor;
try
{
- it = dbHandler.generateIterator(startAfterCN);
+ cursor = dbHandler.generateCursorFrom(startAfterCN);
}
catch (Exception e)
{
return null;
}
- if (!it.next())
+ if (!cursor.next())
{
- close(it);
+ close(cursor);
return null;
}
- return it;
+ return cursor;
}
/**
* Count the number of changes in the replication changelog for the provided
* serverID, between 2 provided changenumbers.
- * @param serverId Identifier of the server for which the iterator is created.
+ * @param serverId Identifier of the server for which to compute the count.
* @param from lower limit changenumber.
* @param to upper limit changenumber.
* @return the number of changes.
@@ -2679,18 +2681,18 @@
// to the Db and look for the change older than eligible CN (cn14)
if (eligibleCN.olderOrEqual(mostRecentDbCN)) {
// let's try to seek the first change <= eligibleCN
- ReplicationIterator ri = null;
+ ReplicationDBCursor cursor = null;
try {
- ri = h.generateIterator(eligibleCN);
- if (ri != null && ri.getChange() != null) {
- ChangeNumber newCN = ri.getChange().getChangeNumber();
+ cursor = h.generateCursorFrom(eligibleCN);
+ if (cursor != null && cursor.getChange() != null) {
+ ChangeNumber newCN = cursor.getChange().getChangeNumber();
result.update(newCN);
}
} catch (ChangelogException e) {
// there's no change older than eligibleCN (case of s3/cn31)
result.update(new ChangeNumber(0, 0, serverId));
} finally {
- close(ri);
+ close(cursor);
}
} else {
// for this serverId, all changes in the ChangelogDb are holder
--
Gitblit v1.10.0