From 1da9905cce34f2d8175c19eac080d0eb83689179 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 12 Nov 2013 16:43:19 +0000
Subject: [PATCH] JEChangelogDB.java: In CrossReplicaDBCursor.getCursorFrom(), let the ChangelogException go up. Made sure calls to TRACER.debugCaught() are done where an exception stacktrace would be lost otherwise.
---
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java | 42 ++++++++++++++++++++++++++++--------------
1 files changed, 28 insertions(+), 14 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 c3b2f8d..30bdeff 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
@@ -35,6 +35,7 @@
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.common.ServerState;
import org.opends.server.replication.protocol.UpdateMsg;
@@ -42,11 +43,13 @@
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.replication.server.changelog.api.*;
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.*;
/**
@@ -54,6 +57,8 @@
*/
public class JEChangelogDB implements ChangelogDB, ReplicationDomainDB
{
+ /** The tracer object for the debug logger. */
+ protected static final DebugTracer TRACER = getTracer();
/**
* {@link DBCursor} implementation that iterates across all the ReplicaDBs of
@@ -83,6 +88,7 @@
});
public CrossReplicaDBCursor(DN baseDN, ServerState startAfterServerState)
+ throws ChangelogException
{
this.baseDN = baseDN;
for (int serverId : getDomainMap(baseDN).keySet())
@@ -94,22 +100,15 @@
}
private DBCursor<UpdateMsg> getCursorFrom(DN baseDN, int serverId,
- CSN startAfterCSN)
+ CSN startAfterCSN) throws ChangelogException
{
JEReplicaDB replicaDB = getReplicaDB(baseDN, serverId);
if (replicaDB != null)
{
- try
- {
- DBCursor<UpdateMsg> cursor =
- replicaDB.generateCursorFrom(startAfterCSN);
- cursor.next();
- return cursor;
- }
- catch (ChangelogException e)
- {
- // ignored
- }
+ DBCursor<UpdateMsg> cursor =
+ replicaDB.generateCursorFrom(startAfterCSN);
+ cursor.next();
+ return cursor;
}
return EMPTY_CURSOR;
}
@@ -262,7 +261,10 @@
}
catch (Exception e)
{
- MessageBuilder mb = new MessageBuilder();
+ if (debugEnabled())
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+
+ final MessageBuilder mb = new MessageBuilder();
mb.append(e.getLocalizedMessage());
mb.append(" ");
mb.append(String.valueOf(dbDirectory));
@@ -410,6 +412,9 @@
}
catch (ChangelogException e)
{
+ if (debugEnabled())
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+
logError(ERR_COULD_NOT_READ_DB.get(this.dbDirectory.getAbsolutePath(),
e.getLocalizedMessage()));
}
@@ -537,6 +542,8 @@
{
firstException = e;
}
+ else if (debugEnabled())
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
}
cnIndexDB = null;
@@ -682,6 +689,8 @@
{
firstException = e;
}
+ else if (debugEnabled())
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
}
}
}
@@ -697,6 +706,8 @@
{
firstException = e;
}
+ else if (debugEnabled())
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
}
if (firstException != null)
@@ -748,6 +759,8 @@
}
catch (Exception e)
{
+ if (debugEnabled())
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
logError(ERR_CHANGENUMBER_DATABASE.get(e.getLocalizedMessage()));
}
}
@@ -765,6 +778,7 @@
/** {@inheritDoc} */
@Override
public DBCursor<UpdateMsg> getCursorFrom(DN baseDN, CSN startAfterCSN)
+ throws ChangelogException
{
// Builds a new serverState for all the serverIds in the replication domain
// to ensure we get cursors starting after the provided CSN.
@@ -774,7 +788,7 @@
/** {@inheritDoc} */
@Override
public DBCursor<UpdateMsg> getCursorFrom(DN baseDN,
- ServerState startAfterServerState)
+ ServerState startAfterServerState) throws ChangelogException
{
return new CrossReplicaDBCursor(baseDN, startAfterServerState);
}
--
Gitblit v1.10.0