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