From acfcc9e05552e3d2fe37f8d9b8ac0827a204ee3a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 21 Jul 2014 12:53:41 +0000
Subject: [PATCH] OPENDJ-1441 (CR-4037) Persistent searches on external changelog do not return changes for new replicas and new domains
---
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java | 39 +++++++++++++--------------------------
1 files changed, 13 insertions(+), 26 deletions(-)
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 4ebee02..ce8b030 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
@@ -41,6 +41,7 @@
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.common.MultiDomainServerState;
import org.opends.server.replication.common.ServerState;
+import org.opends.server.replication.plugin.MultimasterReplication;
import org.opends.server.replication.protocol.UpdateMsg;
import org.opends.server.replication.server.ChangelogState;
import org.opends.server.replication.server.ReplicationServer;
@@ -186,7 +187,7 @@
}
}
- private Map<Integer, JEReplicaDB> getDomainMap(DN baseDN)
+ private Map<Integer, JEReplicaDB> getDomainMap(final DN baseDN)
{
final Map<Integer, JEReplicaDB> domainMap = domainToReplicaDBs.get(baseDN);
if (domainMap != null)
@@ -196,29 +197,12 @@
return Collections.emptyMap();
}
- private JEReplicaDB getReplicaDB(DN baseDN, int serverId)
+ private JEReplicaDB getReplicaDB(final DN baseDN, final int serverId)
{
return getDomainMap(baseDN).get(serverId);
}
/**
- * Provision resources for the specified serverId in the specified replication
- * domain.
- *
- * @param baseDN
- * the replication domain where to add the serverId
- * @param serverId
- * the server Id to add to the replication domain
- * @throws ChangelogException
- * If a database error happened.
- */
- private void commission(DN baseDN, int serverId, ReplicationServer rs)
- throws ChangelogException
- {
- getOrCreateReplicaDB(baseDN, serverId, rs);
- }
-
- /**
* Returns a {@link JEReplicaDB}, possibly creating it.
*
* @param baseDN
@@ -279,10 +263,13 @@
return previousValue;
}
- // we just created a new domain => update all cursors
- for (MultiDomainDBCursor cursor : registeredMultiDomainCursors)
+ if (MultimasterReplication.isECLEnabledDomain(baseDN))
{
- cursor.addDomain(baseDN, null);
+ // we just created a new domain => update all cursors
+ for (MultiDomainDBCursor cursor : registeredMultiDomainCursors)
+ {
+ cursor.addDomain(baseDN, null);
+ }
}
return newValue;
}
@@ -360,7 +347,7 @@
{
for (int serverId : entry.getValue())
{
- commission(entry.getKey(), serverId, replicationServer);
+ getOrCreateReplicaDB(entry.getKey(), serverId, replicationServer);
}
}
}
@@ -695,7 +682,7 @@
{
try
{
- cnIndexDB = new JEChangeNumberIndexDB(this.replicationEnv);
+ cnIndexDB = new JEChangeNumberIndexDB(replicationEnv);
}
catch (Exception e)
{
@@ -774,10 +761,10 @@
/** {@inheritDoc} */
@Override
- public DBCursor<UpdateMsg> getCursorFrom(final DN baseDN, final int serverId, CSN startAfterCSN)
+ public DBCursor<UpdateMsg> getCursorFrom(final DN baseDN, final int serverId, final CSN startAfterCSN)
throws ChangelogException
{
- JEReplicaDB replicaDB = getReplicaDB(baseDN, serverId);
+ final JEReplicaDB replicaDB = getReplicaDB(baseDN, serverId);
if (replicaDB != null)
{
final DBCursor<UpdateMsg> cursor =
--
Gitblit v1.10.0