From 081fae74bd4e0e2a5dcb01ed004e8c7b43a590db Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 22 Sep 2014 14:25:44 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1206: Create a new ReplicationBackend/ChangelogBackend to support cn=changelog
---
opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java | 26 ++++++++++++++++++++------
1 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
index 0998c10..47887b9 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -707,10 +707,24 @@
*/
public void validateServerState(MultiDomainServerState state, Set<DN> ignoredBaseDNs) throws DirectoryException
{
- // TODO : should skip unused domains, where domain.getLatestServerState(); is empty
- final Set<DN> domains = getDomainDNs(ignoredBaseDNs);
- final Set<DN> stateDomains = state.getSnapshot().keySet();
- final Set<DN> domainsCopy = new HashSet<DN>(domains);
+ // Build the two sets of DNs to compare
+ final Set<DN> activeServerDomains = new HashSet<DN>();
+ for (final DN dn : getDomainDNs(ignoredBaseDNs))
+ {
+ final ServerState lastServerState = getReplicationServerDomain(dn).getLatestServerState();
+ if (!lastServerState.isEmpty())
+ {
+ activeServerDomains.add(dn);
+ }
+ }
+ final Set<DN> stateDomains = new HashSet<DN>();
+ for (final DN dn : state)
+ {
+ stateDomains.add(dn);
+ }
+
+ // The two sets of DNs are expected to be the same. Check this.
+ final Set<DN> domainsCopy = new HashSet<DN>(activeServerDomains);
final Set<DN> stateDomainsCopy = new HashSet<DN>(stateDomains);
domainsCopy.removeAll(stateDomains);
if (!domainsCopy.isEmpty())
@@ -724,11 +738,11 @@
ERR_RESYNC_REQUIRED_MISSING_DOMAIN_IN_PROVIDED_COOKIE.get(
missingDomains, "<" + state.toString() + missingDomains + ">"));
}
- stateDomainsCopy.removeAll(domains);
+ stateDomainsCopy.removeAll(activeServerDomains);
if (!stateDomainsCopy.isEmpty())
{
final StringBuilder startState = new StringBuilder();
- for (DN dn : domains) {
+ for (DN dn : activeServerDomains) {
startState.append(dn).append(":").append(state.getServerState(dn).toString()).append(";");
}
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
--
Gitblit v1.10.0