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