From f5efc93e858375f6b8e44eb1c04918372ae93f1b Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Wed, 09 Dec 2009 09:24:11 +0000
Subject: [PATCH] Fix #4361 ECL - draft mode: temporary fake lastChangeNumber after thousands of updates

---
 opends/src/server/org/opends/server/replication/server/DbHandler.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/DbHandler.java b/opends/src/server/org/opends/server/replication/server/DbHandler.java
index 590ac3f..b28b7b8 100644
--- a/opends/src/server/org/opends/server/replication/server/DbHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -289,6 +289,43 @@
   }
 
   /**
+   * Return the number of changes between 2 provided change numbers.
+   * @param from The lower (older) change number.
+   * @param to   The upper (newer) change number.
+   * @return The computed number of changes.
+   */
+  public int getCount(ChangeNumber from, ChangeNumber to)
+  {
+    int count = 0;
+    flush();
+    ReplServerDBCursor cursor = null;
+    try
+    {
+      try
+      {
+        cursor = db.openReadCursor(from);
+      }
+      catch(Exception e)
+      {
+        return 0;
+      }
+      ChangeNumber curr = null;
+      while ((curr = cursor.nextChangeNumber())!=null)
+      {
+        if (curr.newer(to))
+          break;
+        count++;
+      }
+    }
+    finally
+    {
+      if (cursor != null)
+        cursor.abort();
+    }
+    return count;
+  }
+
+  /**
    * Removes the provided number of messages from the beginning of the msgQueue.
    *
    * @param number the number of changes to be removed.

--
Gitblit v1.10.0