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