From 439544d24d842c19a0792f2612b5b088d992fc65 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Tue, 25 Aug 2009 08:39:19 +0000
Subject: [PATCH] Fix 4184 ECL: lastExternalChangelogCookie contains info about private naming contexts
---
opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java b/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
index 64cbf3e..8bf4b39 100644
--- a/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
+++ b/opends/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
@@ -27,6 +27,7 @@
package org.opends.server.replication.common;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -39,7 +40,8 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SearchOperation;
-import org.opends.server.replication.server.ExternalChangeLogSessionImpl;
+import org.opends.server.replication.plugin.MultimasterReplication;
+import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.AttributeValues;
import org.opends.server.types.ByteString;
@@ -48,6 +50,7 @@
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.VirtualAttributeRule;
+import org.opends.server.util.ServerConstants;
import org.opends.server.workflowelement.externalchangelog.ECLWorkflowElement;
/**
@@ -133,15 +136,21 @@
DirectoryServer.getWorkflowElement("EXTERNAL CHANGE LOG");
if (eclwe!=null)
{
- ExternalChangeLogSessionImpl eclsession =
- new ExternalChangeLogSessionImpl(eclwe.getReplicationServer());
+ // Set a list of excluded domains (also exclude 'cn=changelog' itself)
+ ArrayList<String> excludedDomains =
+ MultimasterReplication.getPrivateDomains();
+ if (!excludedDomains.contains(
+ ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT))
+ excludedDomains.add(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT);
- String lastCookie = eclsession.getLastCookie().toString();
+ ReplicationServer rs = eclwe.getReplicationServer();
+ MultiDomainServerState lastCookie =
+ rs.getLastECLCookie(excludedDomains);
AttributeValue value =
AttributeValues.create(
- ByteString.valueOf(lastCookie),
- ByteString.valueOf(lastCookie));
+ ByteString.valueOf(lastCookie.toString()),
+ ByteString.valueOf(lastCookie.toString()));
values=Collections.singleton(value);
}
return values;
--
Gitblit v1.10.0