From 116cc7b2a9e8b6fc5bcb6115cb9cf633cec12601 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 16 Jan 2007 20:13:21 +0000
Subject: [PATCH] Revert the changes made in revision 980 because they appear to be responsible for a number of test case failures and a potential deadlock.

---
 opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java |   62 ++++++++++++------------------
 1 files changed, 25 insertions(+), 37 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java
index 64bb929..ac53f2b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java
@@ -81,7 +81,6 @@
   private boolean shutdown = false;
   private boolean done = false;
   private DirectoryThread thread = null;
-  private Object flushLock = new Object();
 
   /**
    * Creates a New dbHandler associated to a given LDAP server.
@@ -205,12 +204,6 @@
   public ChangelogIterator generateIterator(ChangeNumber changeNumber)
                            throws DatabaseException, Exception
   {
-    /*
-     * make sure to flush some changes in the database so that
-     * we don't create the iterator on an empty database when the
-     * dbHandler has just been started.
-     */
-    flush();
     return new ChangelogIterator(serverId, db, changeNumber);
   }
 
@@ -327,22 +320,17 @@
       while ((size < 5000 ) &&  (!finished))
       {
         ChangeNumber changeNumber = cursor.nextChangeNumber();
-        if (changeNumber != null)
+        if ((changeNumber != null) && (!changeNumber.equals(lastChange))
+            && (changeNumber.older(trimDate)))
         {
-          if ((!changeNumber.equals(lastChange))
-              && (changeNumber.older(trimDate)))
-          {
-            size++;
-            cursor.delete();
-          }
-          else
-          {
-            firstChange = changeNumber;
-            finished = true;
-          }
+          size++;
+          cursor.delete();
         }
         else
+        {
+          firstChange = changeNumber;
           finished = true;
+        }
       }
 
       cursor.close();
@@ -362,21 +350,19 @@
 
     do
     {
-      synchronized(flushLock)
-      {
-        // get N messages to save in the DB
-        List<UpdateMessage> changes = getChanges(500);
+      // get N messages to save in the DB
+      List<UpdateMessage> changes = getChanges(500);
 
-        // if no more changes to save exit immediately.
-        if ((changes == null) || ((size = changes.size()) == 0))
-          return;
+      // if no more changes to save exit immediately.
+      if ((changes == null) || ((size = changes.size()) == 0))
+        return;
 
-        // save the change to the stable storage.
-        db.addEntries(changes);
+      // save the change to the stable storage.
+      db.addEntries(changes);
 
-        // remove the changes from the list of changes to be saved.
-        clear(changes.size());
-      }
+      // remove the changes from the list of changes to be saved.
+      clear(changes.size());
+
     } while (size >=500);
   }
 
@@ -401,17 +387,19 @@
       attributes.add(new Attribute("changelog-database",
                                    String.valueOf(serverId)));
       attributes.add(new Attribute("base-dn", baseDn.toString()));
-      if (firstChange != null)
+      ChangeNumber first = getFirstChange();
+      ChangeNumber last = getLastChange();
+      if (first != null)
       {
-        Date firstTime = new Date(firstChange.getTime());
+        Date firstTime = new Date(first.getTime());
         attributes.add(new Attribute("first-change",
-            firstChange.toString() + " " + firstTime.toString()));
+            first.toString() + " " + firstTime.toString()));
       }
-      if (lastChange != null)
+      if (last != null)
       {
-        Date lastTime = new Date(lastChange.getTime());
+        Date lastTime = new Date(last.getTime());
         attributes.add(new Attribute("last-change",
-            lastChange.toString() + " " + lastTime.toString()));
+            last.toString() + " " + lastTime.toString()));
       }
 
       return attributes;

--
Gitblit v1.10.0