From e43b65a94cd25658d7ffd2c2a03a342a1e44f01a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 18 Sep 2013 15:30:01 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB
---
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java | 23 ++++++-----------------
opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java | 3 +--
opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java | 3 +--
opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java | 5 ++---
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java | 10 +++-------
5 files changed, 13 insertions(+), 31 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
index 8bd4a1b..52b77a2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
@@ -139,9 +139,8 @@
excludedDomains.add(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT);
ReplicationServer rs = eclwe.getReplicationServer();
- rs.disableEligibility(excludedDomains);
long[] limits = rs.getECLChangeNumberLimits(
- rs.getEligibleCSN(), excludedDomains);
+ rs.getEligibleCSN(excludedDomains), excludedDomains);
first = String.valueOf(limits[0]);
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
index 577c8fb..5ab3f53 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
@@ -139,9 +139,8 @@
excludedDomains.add(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT);
ReplicationServer rs = eclwe.getReplicationServer();
- rs.disableEligibility(excludedDomains);
long[] limits = rs.getECLChangeNumberLimits(
- rs.getEligibleCSN(), excludedDomains);
+ rs.getEligibleCSN(excludedDomains), excludedDomains);
last = String.valueOf(limits[1]);
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
index afaebbf..9734c48 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -1018,8 +1018,7 @@
}
excludedBaseDNs = startECLSessionMsg.getExcludedBaseDNs();
- replicationServer.disableEligibility(excludedBaseDNs);
- eligibleCSN = replicationServer.getEligibleCSN();
+ refreshEligibleCSN();
initializeChangelogSearch(startECLSessionMsg);
@@ -1558,7 +1557,7 @@
*/
public void refreshEligibleCSN()
{
- eligibleCSN = replicationServer.getEligibleCSN();
+ eligibleCSN = replicationServer.getEligibleCSN(excludedBaseDNs);
}
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index b41939a..51fcde8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -181,9 +181,6 @@
private final Object connectThreadLock = new Object();
private long domainTicket = 0L;
- /** BaseDNs excluded for ECL. */
- private Set<String> excludedBaseDNs = new HashSet<String>();
-
/**
* The weight affected to the replication server.
* Each replication server of the topology has a weight. When combined
@@ -1459,21 +1456,14 @@
}
/**
- * Excluded a list of domain from eligibility computation.
- * @param excludedBaseDNs the provided list of baseDNs excluded from
- * the computation of eligibleCSN.
- */
- public void disableEligibility(Set<String> excludedBaseDNs)
- {
- this.excludedBaseDNs = excludedBaseDNs;
- }
-
- /**
* Returns the eligible CSN cross domains - relies on the eligible CSN from
* each domain.
+ *
+ * @param excludedBaseDNs
+ * the list of baseDNs excluded from the computation of eligibleCSN
* @return the cross domain eligible CSN.
*/
- public CSN getEligibleCSN()
+ public CSN getEligibleCSN(Set<String> excludedBaseDNs)
{
String debugLog = "";
@@ -1710,8 +1700,6 @@
*/
public MultiDomainServerState getLastECLCookie(Set<String> excludedBaseDNs)
{
- disableEligibility(excludedBaseDNs);
-
// Initialize start state for all running domains with empty state
MultiDomainServerState result = new MultiDomainServerState();
for (ReplicationServerDomain rsd : getReplicationServerDomains())
@@ -1720,7 +1708,8 @@
|| rsd.getDbServerState().isEmpty())
continue;
- result.update(rsd.getBaseDN(), rsd.getEligibleState(getEligibleCSN()));
+ final CSN eligibleCSN = getEligibleCSN(excludedBaseDNs);
+ result.update(rsd.getBaseDN(), rsd.getEligibleState(eligibleCSN));
}
return result;
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
index 166011f..328229d 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
@@ -2238,7 +2238,7 @@
+ " DbServerState=" + rsd1.getDbServerState()
+ " ChangeTimeHeartBeatState=" + rsd1.getChangeTimeHeartbeatState()
+ " eligibleCSN=" + rsd1.getEligibleCSN()
- + " rs eligibleCSN=" + replicationServer.getEligibleCSN());
+ + " rs eligibleCSN=" + replicationServer.getEligibleCSN(null));
// FIXME:ECL Enable this test by adding an assert on the right value
ReplicationServerDomain rsd2 = replicationServer.getReplicationServerDomain(TEST_ROOT_DN2);
@@ -2248,7 +2248,7 @@
+ " DbServerState=" + rsd2.getDbServerState()
+ " ChangeTimeHeartBeatState=" + rsd2.getChangeTimeHeartbeatState()
+ " eligibleCSN=" + rsd2.getEligibleCSN()
- + " rs eligibleCSN=" + replicationServer.getEligibleCSN());
+ + " rs eligibleCSN=" + replicationServer.getEligibleCSN(null));
// FIXME:ECL Enable this test by adding an assert on the right value
}
finally
@@ -2869,13 +2869,9 @@
Set<String> excludedDomains = MultimasterReplication.getECLDisabledDomains();
excludedDomains.add(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT);
- ECLWorkflowElement eclwe = (ECLWorkflowElement)
- DirectoryServer.getWorkflowElement("EXTERNAL CHANGE LOG");
- ReplicationServer rs = eclwe.getReplicationServer();
- rs.disableEligibility(excludedDomains);
long t1 = TimeThread.getTime();
long[] limits = replicationServer.getECLChangeNumberLimits(
- replicationServer.getEligibleCSN(), excludedDomains);
+ replicationServer.getEligibleCSN(excludedDomains), excludedDomains);
assertEquals(limits[1], maxMsg);
long t2 = TimeThread.getTime();
debugInfo(tn, "Perfs - " + maxMsg + " counted in (ms):" + (t2 - t1));
--
Gitblit v1.10.0