From 137d1b4ba1992acdd880b61b1a03dc31f0cc1839 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 23 Apr 2014 14:19:01 +0000
Subject: [PATCH] OPENDJ-1448 Remove JReplicaDB flushing thread and msg queue
---
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java | 44 ++++++++------------------------------------
1 files changed, 8 insertions(+), 36 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
index 6c22e5c..fcf0ad4 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
@@ -62,8 +62,6 @@
private static int NO_KEY = 0;
private DraftCNDB db;
- /** FIXME What is this field used for? */
- private volatile long oldestChangeNumber = NO_KEY;
/**
* The newest changenumber stored in the DB. It is used to avoid purging the
* record with the newest changenumber. The newest record in the changenumber
@@ -96,14 +94,11 @@
public JEChangeNumberIndexDB(ReplicationDbEnv dbEnv) throws ChangelogException
{
db = new DraftCNDB(dbEnv);
- final ChangeNumberIndexRecord oldestRecord = db.readFirstRecord();
final ChangeNumberIndexRecord newestRecord = db.readLastRecord();
- oldestChangeNumber = getChangeNumber(oldestRecord);
- final long newestCN = getChangeNumber(newestRecord);
- newestChangeNumber = newestCN;
+ newestChangeNumber = getChangeNumber(newestRecord);
// initialization of the lastGeneratedChangeNumber from the DB content
// if DB is empty => last record does not exist => default to 0
- lastGeneratedChangeNumber = new AtomicLong(newestCN);
+ lastGeneratedChangeNumber = new AtomicLong(newestChangeNumber);
// Monitoring registration
DirectoryServer.deregisterMonitorProvider(dbMonitor);
@@ -117,7 +112,7 @@
{
return record.getChangeNumber();
}
- return 0;
+ return NO_KEY;
}
/** {@inheritDoc} */
@@ -198,19 +193,11 @@
*/
public void shutdown()
{
- if (shutdown.get())
+ if (shutdown.compareAndSet(false, true))
{
- return;
+ db.shutdown();
+ DirectoryServer.deregisterMonitorProvider(dbMonitor);
}
-
- shutdown.set(true);
- synchronized (this)
- {
- notifyAll();
- }
-
- db.shutdown();
- DirectoryServer.deregisterMonitorProvider(dbMonitor);
}
/**
@@ -236,11 +223,6 @@
while (!mustShutdown(shutdown) && cursor.next())
{
final ChangeNumberIndexRecord record = cursor.currentRecord();
- if (record.getChangeNumber() != oldestChangeNumber)
- {
- oldestChangeNumber = record.getChangeNumber();
- }
-
if (record.getChangeNumber() != newestChangeNumber
&& record.getCSN().isOlderThan(purgeCSN))
{
@@ -293,14 +275,9 @@
final DraftCNDBCursor cursor = db.openDeleteCursor();
try
{
- boolean isOldestRecord = true;
while (!mustShutdown(shutdown) && cursor.next())
{
final ChangeNumberIndexRecord record = cursor.currentRecord();
- if (isOldestRecord && record.getChangeNumber() != oldestChangeNumber)
- {
- oldestChangeNumber = record.getChangeNumber();
- }
if (record.getChangeNumber() == newestChangeNumber)
{
// do not purge the newest record to avoid having the last generated
@@ -312,10 +289,6 @@
{
cursor.delete();
}
- else
- {
- isOldestRecord = false;
- }
}
}
catch (ChangelogException e)
@@ -398,7 +371,7 @@
@Override
public String toString()
{
- return getClass().getSimpleName() + ": " + oldestChangeNumber + " "
+ return getClass().getSimpleName() + ", newestChangeNumber="
+ newestChangeNumber;
}
@@ -411,8 +384,7 @@
public void clear() throws ChangelogException
{
db.clear();
- oldestChangeNumber = getChangeNumber(db.readFirstRecord());
- newestChangeNumber = getChangeNumber(db.readLastRecord());
+ newestChangeNumber = NO_KEY;
}
}
--
Gitblit v1.10.0