From 9d5b1c7a628471604be4768f97fcdaf13cf0639f Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 02 Oct 2013 13:45:10 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB
---
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java | 46 ++++++++++++++++++++++++++--------------------
1 files changed, 26 insertions(+), 20 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 7360012..dff2b0b 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
@@ -33,7 +33,6 @@
import org.opends.messages.Message;
import org.opends.messages.MessageBuilder;
import org.opends.server.config.ConfigException;
-import org.opends.server.loggers.debug.DebugTracer;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.protocol.UpdateMsg;
import org.opends.server.replication.server.ChangelogState;
@@ -43,13 +42,11 @@
import org.opends.server.replication.server.changelog.api.ChangelogException;
import org.opends.server.replication.server.changelog.api.ReplicaDBCursor;
import org.opends.server.types.DN;
-import org.opends.server.types.DebugLogLevel;
import org.opends.server.util.Pair;
import org.opends.server.util.StaticUtils;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.server.loggers.ErrorLogger.*;
-import static org.opends.server.loggers.debug.DebugLogger.*;
import static org.opends.server.util.StaticUtils.*;
/**
@@ -58,9 +55,6 @@
public class JEChangelogDB implements ChangelogDB
{
- /** The tracer object for the debug logger. */
- private static final DebugTracer TRACER = getTracer();
-
/**
* This map contains the List of updates received from each LDAP server.
*/
@@ -313,6 +307,11 @@
*/
public void clearDB() throws ChangelogException
{
+ if (!dbDirectory.exists())
+ {
+ return;
+ }
+
// Remember the first exception because :
// - we want to try to remove everything we want to remove
// - then throw the first encountered exception
@@ -402,6 +401,7 @@
public void shutdownDomain(DN baseDN)
{
shutdownDbHandlers(getDomainMap(baseDN));
+ sourceDbHandlers.remove(baseDN);
}
private void shutdownDbHandlers(Map<Integer, DbHandler> domainMap)
@@ -446,8 +446,13 @@
/** {@inheritDoc} */
@Override
- public void removeDomain(DN baseDN)
+ public void removeDomain(DN baseDN) throws ChangelogException
{
+ // Remember the first exception because :
+ // - we want to try to remove everything we want to remove
+ // - then throw the first encountered exception
+ ChangelogException firstException = null;
+
// 1- clear the replica DBs
final Map<Integer, DbHandler> domainMap = getDomainMap(baseDN);
synchronized (domainMap)
@@ -458,17 +463,13 @@
{
dbHandler.clear();
}
- catch (Exception e)
+ catch (ChangelogException e)
{
- // TODO: i18n
- MessageBuilder mb = new MessageBuilder();
- mb.append(ERR_ERROR_CLEARING_DB.get(dbHandler.toString(), e
- .getMessage()
- + " " + stackTraceToSingleLineString(e)));
- logError(mb.toMessage());
+ firstException = e;
}
}
shutdownDbHandlers(domainMap);
+ sourceDbHandlers.remove(baseDN);
}
// 2- clear the ChangeNumber index DB
@@ -480,11 +481,11 @@
{
cnIndexDB.clear(baseDN);
}
- catch (Exception ignored)
+ catch (ChangelogException e)
{
- if (debugEnabled())
+ if (firstException == null)
{
- TRACER.debugCaught(DebugLogLevel.WARNING, ignored);
+ firstException = e;
}
}
}
@@ -495,13 +496,18 @@
{
dbEnv.clearGenerationId(baseDN);
}
- catch (Exception ignored)
+ catch (ChangelogException e)
{
- if (debugEnabled())
+ if (firstException == null)
{
- TRACER.debugCaught(DebugLogLevel.WARNING, ignored);
+ firstException = e;
}
}
+
+ if (firstException != null)
+ {
+ throw firstException;
+ }
}
/** {@inheritDoc} */
--
Gitblit v1.10.0