From 9e7f24ceaf81315e49decb9ebb7aed54c25b5dee Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 08 Oct 2013 15:07:11 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB
---
opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java | 9 +---
opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java | 13 ++----
opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java | 24 ++++++++++--
opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java | 15 ++++---
4 files changed, 35 insertions(+), 26 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
index 4956770..aa79495 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -1384,17 +1384,12 @@
private void assignNewChangeNumberAndStore(ECLUpdateMsg change)
throws ChangelogException
{
- ChangeNumberIndexDB cnIndexDB = replicationServer.getChangeNumberIndexDB();
-
- change.setChangeNumber(cnIndexDB.nextChangeNumber());
-
+ final CNIndexRecord record = new CNIndexRecord(previousCookie.toString(),
+ change.getBaseDN(), change.getUpdateMsg().getCSN());
// store in CNIndexDB the pair
// (change number of the current change, state before this change)
- cnIndexDB.addRecord(new CNIndexRecord(
- change.getChangeNumber(),
- previousCookie.toString(),
- change.getBaseDN(),
- change.getUpdateMsg().getCSN()));
+ change.setChangeNumber(
+ replicationServer.getChangeNumberIndexDB().addRecord(record));
}
/**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java
index 7bd5bc0..eb057d7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java
@@ -37,10 +37,10 @@
{
/** This is the key used to store the rest of the . */
- private long changeNumber;
- private String previousCookie;
- private DN baseDN;
- private CSN csn;
+ private final long changeNumber;
+ private final String previousCookie;
+ private final DN baseDN;
+ private final CSN csn;
/**
* Builds an instance of this class.
@@ -64,6 +64,22 @@
}
/**
+ * Builds an instance of this class, with changeNumber equal to 0.
+ *
+ * @param previousCookie
+ * the previous cookie
+ * @param baseDN
+ * the baseDN
+ * @param csn
+ * the replication CSN field
+ * @see #CNIndexRecord(long, String, DN, CSN)
+ */
+ public CNIndexRecord(String previousCookie, DN baseDN, CSN csn)
+ {
+ this(0, previousCookie, baseDN, csn);
+ }
+
+ /**
* Getter for the baseDN field.
*
* @return the baseDN
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java
index 83d428b..0cbd405 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java
@@ -42,12 +42,6 @@
*/
public interface ChangeNumberIndexDB
{
- /**
- * Generates the next change number.
- *
- * @return The newly generated change number
- */
- long nextChangeNumber();
/**
* Returns the last generated change number.
@@ -96,10 +90,11 @@
*
* @param record
* The {@link CNIndexRecord} to add to this DB.
+ * @return the change number associated to this record on adding to this DB
* @throws ChangelogException
* if a database problem occurs.
*/
- void addRecord(CNIndexRecord record) throws ChangelogException;
+ long addRecord(CNIndexRecord record) throws ChangelogException;
/**
* Generate a new {@link ChangeNumberIndexDBCursor} that allows to browse the
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
index daf3f0a..a6e9d17 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
@@ -153,12 +153,17 @@
/** {@inheritDoc} */
@Override
- public void addRecord(CNIndexRecord record) throws ChangelogException
+ public long addRecord(CNIndexRecord record) throws ChangelogException
{
- db.addRecord(record);
+ long changeNumber = nextChangeNumber();
+ final CNIndexRecord newRecord =
+ new CNIndexRecord(changeNumber, record.getPreviousCookie(), record
+ .getBaseDN(), record.getCSN());
+ db.addRecord(newRecord);
if (debugEnabled())
- TRACER.debugInfo("In JEChangeNumberIndexDB.add, added: " + record);
+ TRACER.debugInfo("In JEChangeNumberIndexDB.add, added: " + newRecord);
+ return changeNumber;
}
/** {@inheritDoc} */
@@ -175,9 +180,7 @@
return db.readLastRecord();
}
- /** {@inheritDoc} */
- @Override
- public long nextChangeNumber()
+ private long nextChangeNumber()
{
return lastGeneratedChangeNumber.incrementAndGet();
}
--
Gitblit v1.10.0