From d03f99a7c7ecd5f3e9e94f84c9b8a3b22d8f232a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Sat, 05 Oct 2013 18:19:50 +0000
Subject: [PATCH] Reverted part of r9660 and all of r9661. I think it was invalid to think that we might want to call getCount() for a given serverId (hence replicaDB) by using the serverId from one of the CSNs. We can very well call getCount() with from and to CSNs that are not present on the targeted replicaDB.
---
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java | 4 ++--
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java | 12 +++++++-----
opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationDomainDB.java | 19 +++++++++++--------
3 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 284e7f9..8ac9d55 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -1307,13 +1307,14 @@
/**
* Count the number of changes in the replication changelog for the provided
* serverID, between 2 provided CSNs.
+ * @param serverId Identifier of the server for which to compute the count.
* @param from lower limit CSN.
* @param to upper limit CSN.
* @return the number of changes.
*/
- public long getCount(CSN from, CSN to)
+ public long getCount(int serverId, CSN from, CSN to)
{
- return domainDB.getCount(baseDN, from, to);
+ return domainDB.getCount(baseDN, serverId, from, to);
}
/**
@@ -2805,7 +2806,7 @@
for (CSN csn : getLatestServerState())
{
CSN startCSN = startState.getCSN(csn.getServerId());
- long serverIdRes = getCount(startCSN, endCSN);
+ long serverIdRes = getCount(csn.getServerId(), startCSN, endCSN);
// The startPoint is excluded when counting the ECL eligible changes
if (startCSN != null && serverIdRes > 0)
@@ -2831,9 +2832,10 @@
long res = 0;
for (CSN csn : getLatestServerState())
{
+ int serverId = csn.getServerId();
CSN lStartCSN =
- new CSN(startCSN.getTime(), startCSN.getSeqnum(), csn.getServerId());
- res += getCount(lStartCSN, endCSN);
+ new CSN(startCSN.getTime(), startCSN.getSeqnum(), serverId);
+ res += getCount(serverId, lStartCSN, endCSN);
}
return res;
}
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationDomainDB.java b/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationDomainDB.java
index e5c2285..d64a8a5 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationDomainDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationDomainDB.java
@@ -136,7 +136,8 @@
* </ol>
* <h6>Example</h6>
* <p>
- * Given the following replica database for baseDN "dc=example,dc=com":
+ * Given the following replica database for baseDN "dc=example,dc=com" and
+ * serverId 1:
*
* <pre>
* CSN1 <= Oldest
@@ -149,23 +150,25 @@
* Then:
*
* <pre>
- * assertEquals(getCount("dc=example,dc=com", CSN1, CSN1), 1);
- * assertEquals(getCount("dc=example,dc=com", CSN1, CSN2), 2);
- * assertEquals(getCount("dc=example,dc=com", CSN1, CSN5), 5);
- * assertEquals(getCount("dc=example,dc=com", null, CSN5), 5);
- * assertEquals(getCount("dc=example,dc=com", CSN1, null), 0);
- * assertEquals(getCount("dc=example,dc=com", null, null), 5);
+ * assertEquals(getCount("dc=example,dc=com", 1, CSN1, CSN1), 1);
+ * assertEquals(getCount("dc=example,dc=com", 1, CSN1, CSN2), 2);
+ * assertEquals(getCount("dc=example,dc=com", 1, CSN1, CSN5), 5);
+ * assertEquals(getCount("dc=example,dc=com", 1, null, CSN5), 5);
+ * assertEquals(getCount("dc=example,dc=com", 1, CSN1, null), 0);
+ * assertEquals(getCount("dc=example,dc=com", 1, null, null), 5);
* </pre>
*
* @param baseDN
* the replication domain baseDN
+ * @param serverId
+ * the serverId on which to act
* @param from
* The older CSN where to start the count
* @param to
* The newer CSN where to end the count
* @return The computed number of changes
*/
- long getCount(DN baseDN, CSN from, CSN to);
+ long getCount(DN baseDN, int serverId, CSN from, CSN to);
/**
* Returns the {@link CSN} situated immediately after the specified
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
index 809bf0e..cd0c63b 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
@@ -375,9 +375,9 @@
/** {@inheritDoc} */
@Override
- public long getCount(DN baseDN, CSN from, CSN to)
+ public long getCount(DN baseDN, int serverId, CSN from, CSN to)
{
- JEReplicaDB replicaDB = getReplicaDB(baseDN, from.getServerId());
+ JEReplicaDB replicaDB = getReplicaDB(baseDN, serverId);
if (replicaDB != null)
{
return replicaDB.getCount(from, to);
--
Gitblit v1.10.0