From 0a9135e3444bbefde6188f456b9c9772a816096d Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 18 Sep 2013 15:17:14 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB
---
opends/src/server/org/opends/server/replication/server/ECLServerHandler.java | 43 ++++++++++++++++++++++---------------------
1 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java b/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
index 8621480..afaebbf 100644
--- a/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -391,7 +391,8 @@
super(session, queueSize, replicationServer, rcvWindowSize);
try
{
- setBaseDNAndDomain(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT, true);
+ DN baseDN = DN.decode(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT);
+ setBaseDNAndDomain(baseDN, true);
}
catch(DirectoryException de)
{
@@ -665,8 +666,8 @@
Depending on allowUnknownDomains provided flag, a non empty map will
be considered as an error when allowUnknownDomains is false.
*/
- Map<String,ServerState> startStatesFromProvidedCookie =
- new HashMap<String,ServerState>();
+ Map<DN, ServerState> startStatesFromProvidedCookie =
+ new HashMap<DN, ServerState>();
ReplicationServer rs = this.replicationServer;
@@ -691,11 +692,11 @@
continue;
// skip the excluded domains
- if (excludedBaseDNs.contains(rsd.getBaseDn()))
+ if (excludedBaseDNs.contains(rsd.getBaseDN().toNormalizedString()))
{
// this is an excluded domain
if (allowUnknownDomains)
- startStatesFromProvidedCookie.remove(rsd.getBaseDn());
+ startStatesFromProvidedCookie.remove(rsd.getBaseDN());
continue;
}
@@ -713,14 +714,14 @@
if (isPersistent == PERSISTENT_CHANGES_ONLY)
{
newDomainCtxt.startState = rsd.getEligibleState(eligibleCSN);
- startStatesFromProvidedCookie.remove(rsd.getBaseDn());
+ startStatesFromProvidedCookie.remove(rsd.getBaseDN());
}
else
{
// let's take the start state for this domain from the provided
// cookie
newDomainCtxt.startState =
- startStatesFromProvidedCookie.remove(rsd.getBaseDn());
+ startStatesFromProvidedCookie.remove(rsd.getBaseDN());
if (providedCookie == null
|| providedCookie.length() == 0
@@ -742,7 +743,7 @@
// when there is a cookie provided in the request,
if (newDomainCtxt.startState == null)
{
- missingDomains += (rsd.getBaseDn() + ":;");
+ missingDomains += (rsd.getBaseDN() + ":;");
continue;
}
else if (!newDomainCtxt.startState.isEmpty())
@@ -750,8 +751,8 @@
if (hasCookieBeenTrimmedFromDB(rsd, newDomainCtxt.startState))
{
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
- ERR_RESYNC_REQUIRED_TOO_OLD_DOMAIN_IN_PROVIDED_COOKIE
- .get(newDomainCtxt.rsd.getBaseDn()));
+ ERR_RESYNC_REQUIRED_TOO_OLD_DOMAIN_IN_PROVIDED_COOKIE.get(
+ newDomainCtxt.rsd.getBaseDN().toNormalizedString()));
}
}
}
@@ -764,12 +765,12 @@
// Creates an unconnected SH for the domain
MessageHandler mh = new MessageHandler(maxQueueSize, replicationServer);
mh.setInitialServerState(newDomainCtxt.startState);
- mh.setBaseDNAndDomain(rsd.getBaseDn(), false);
+ mh.setBaseDNAndDomain(rsd.getBaseDN(), false);
// register the unconnected into the domain
rsd.registerHandler(mh);
newDomainCtxt.mh = mh;
- previousCookie.update(newDomainCtxt.rsd.getBaseDn(),
+ previousCookie.update(newDomainCtxt.rsd.getBaseDN(),
newDomainCtxt.startState);
// store the new context
@@ -799,7 +800,7 @@
if (!startStatesFromProvidedCookie.isEmpty())
{
if (allowUnknownDomains)
- for (String providedDomain : startStatesFromProvidedCookie.keySet())
+ for (DN providedDomain : startStatesFromProvidedCookie.keySet())
if (rs.getReplicationServerDomain(providedDomain) == null)
// the domain provided in the cookie is not replicated
startStatesFromProvidedCookie.remove(providedDomain);
@@ -816,7 +817,7 @@
*/
StringBuilder sb = new StringBuilder();
for (DomainContext domainCtxt : domainCtxts) {
- sb.append(domainCtxt.rsd.getBaseDn()).append(":")
+ sb.append(domainCtxt.rsd.getBaseDN()).append(":")
.append(domainCtxt.startState).append(";");
}
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
@@ -1235,7 +1236,7 @@
final ECLUpdateMsg change = new ECLUpdateMsg(
(LDAPUpdateMsg) oldestContext.nextMsg,
null, // cookie will be set later
- oldestContext.rsd.getBaseDn(),
+ oldestContext.rsd.getBaseDN().toNormalizedString(),
0); // changeNumber may be set later
oldestContext.nextMsg = null;
@@ -1287,7 +1288,7 @@
final ECLUpdateMsg change = new ECLUpdateMsg(
(LDAPUpdateMsg) oldestContext.nextMsg,
null, // set later
- oldestContext.rsd.getBaseDn(),
+ oldestContext.rsd.getBaseDN().toNormalizedString(),
0);
oldestContext.nextMsg = null; // clean
@@ -1318,7 +1319,7 @@
TRACER.debugInfo("getNextECLUpdate updates previousCookie:" + csn);
// Update the current state
- previousCookie.update(oldestChange.getBaseDN(), csn);
+ previousCookie.update(DN.decode(oldestChange.getBaseDN()), csn);
// Set the current value of global state in the returned message
oldestChange.setCookie(previousCookie);
@@ -1357,7 +1358,7 @@
// replogCSN : the oldest change from the changelog db
CSN csnFromChangelogDb = oldestChange.getUpdateMsg().getCSN();
- String dnFromChangelogDb = oldestChange.getBaseDN();
+ DN dnFromChangelogDb = DN.decode(oldestChange.getBaseDN());
while (true)
{
@@ -1372,7 +1373,7 @@
// the next change from the CNIndexDB
final CNIndexRecord currentRecord = cnIndexDBCursor.getRecord();
final CSN csnFromDraftCNDb = currentRecord.getCSN();
- final String dnFromDraftCNDb = currentRecord.getBaseDN();
+ final DN dnFromDraftCNDb = currentRecord.getBaseDN();
if (debugEnabled())
TRACER.debugInfo("assignChangeNumber() generating change number "
@@ -1440,7 +1441,7 @@
}
}
- private boolean areSameChange(CSN csn1, String dn1, CSN csn2, String dn2)
+ private boolean areSameChange(CSN csn1, DN dn1, CSN csn2, DN dn2)
{
boolean sameDN = dn1.compareTo(dn2) == 0;
boolean sameCSN = csn1.compareTo(csn2) == 0;
@@ -1458,7 +1459,7 @@
replicationServer.getChangeNumberIndexDB().addRecord(new CNIndexRecord(
change.getChangeNumber(),
previousCookie.toString(),
- change.getBaseDN(),
+ DN.decode(change.getBaseDN()),
change.getUpdateMsg().getCSN()));
}
--
Gitblit v1.10.0