From b10a33c6e4b6e583b9bd2b31de7f04b5fe32d6c8 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 13 Aug 2013 15:15:13 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB
---
opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java | 42 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 41 insertions(+), 1 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
similarity index 93%
rename from opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java
rename to opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
index d0d3e2b..d6d5707 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
@@ -25,7 +25,7 @@
* Copyright 2006-2009 Sun Microsystems, Inc.
* Portions Copyright 2011-2013 ForgeRock AS
*/
-package org.opends.server.replication.server;
+package org.opends.server.replication.server.changelog.je;
import java.io.File;
import java.io.UnsupportedEncodingException;
@@ -34,6 +34,7 @@
import org.opends.messages.Message;
import org.opends.messages.MessageBuilder;
import org.opends.server.loggers.debug.DebugTracer;
+import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.replication.server.changelog.api.ChangelogException;
import com.sleepycat.je.*;
@@ -567,4 +568,43 @@
throw new ChangelogException(e);
}
}
+
+ /**
+ * Shuts down replication when an unexpected database exception occurs. Note
+ * that we do not expect lock timeouts or txn timeouts because the replication
+ * databases are deadlock free, thus all operations should complete
+ * eventually.
+ *
+ * @param e
+ * The unexpected database exception.
+ */
+ void shutdownOnException(DatabaseException e)
+ {
+ innerShutdownOnException(e);
+ }
+
+ /**
+ * Shuts down replication when an unexpected changelog exception occurs. Note
+ * that we do not expect lock timeouts or txn timeouts because the replication
+ * databases are deadlock free, thus all operations should complete
+ * eventually.
+ *
+ * @param e
+ * The unexpected changelog exception.
+ */
+ void shutdownOnException(ChangelogException e)
+ {
+ innerShutdownOnException(e);
+ }
+
+ private void innerShutdownOnException(Exception e)
+ {
+ MessageBuilder mb = new MessageBuilder();
+ mb.append(ERR_CHANGELOG_SHUTDOWN_DATABASE_ERROR.get());
+ mb.append(". ");
+ mb.append(stackTraceToSingleLineString(e));
+ logError(mb.toMessage());
+ replicationServer.shutdown();
+ }
+
}
--
Gitblit v1.10.0