From 793b2352d578039c6070d62fa9f83b4169364694 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 17 Oct 2013 14:27:16 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB

---
 opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java    |   11 +++++------
 opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java |   28 ++++++++++++++++------------
 opends/src/messages/messages/replication.properties                                       |    2 ++
 3 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/opends/src/messages/messages/replication.properties b/opends/src/messages/messages/replication.properties
index 854cd46..4bbda0c 100644
--- a/opends/src/messages/messages/replication.properties
+++ b/opends/src/messages/messages/replication.properties
@@ -496,3 +496,5 @@
  when accessing the change number database: impossible to read the newest record \
  after having successfully read the oldest. Database might have been cleaned or \
  closed between successive reads
+SEVERE_WARN_CANNOT_OPEN_DATABASE_BECAUSE_SHUTDOWN_WAS_REQUESTED_218=Cannot \
+ open database %s because shutdown was requested from replication server RS(%d)
\ No newline at end of file
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 96e81db..c4c614f 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
@@ -498,11 +498,11 @@
   @Override
   public void shutdownDomain(DN baseDN)
   {
-    shutdownReplicaDBs(getDomainMap(baseDN));
-    domainToReplicaDBs.remove(baseDN);
+    shutdownReplicaDBs(baseDN, getDomainMap(baseDN));
   }
 
-  private void shutdownReplicaDBs(Map<Integer, JEReplicaDB> domainMap)
+  private void shutdownReplicaDBs(DN baseDN,
+      Map<Integer, JEReplicaDB> domainMap)
   {
     synchronized (domainMap)
     {
@@ -510,7 +510,7 @@
       {
         replicaDB.shutdown();
       }
-      domainMap.clear();
+      domainToReplicaDBs.remove(baseDN);
     }
   }
 
@@ -562,8 +562,7 @@
           firstException = e;
         }
       }
-      shutdownReplicaDBs(domainMap);
-      domainToReplicaDBs.remove(baseDN);
+      shutdownReplicaDBs(baseDN, domainMap);
     }
 
     // 2- clear the ChangeNumber index DB
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
index 9c0a9be..48c299e 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
@@ -171,8 +171,9 @@
   {
     if (isShuttingDown.get())
     {
-      // TODO JNR i18n
-      throw new ChangelogException(Message.raw("DB is closing"));
+      throw new ChangelogException(
+          WARN_CANNOT_OPEN_DATABASE_BECAUSE_SHUTDOWN_WAS_REQUESTED.get(
+              databaseName, replicationServer.getServerId()));
     }
     final DatabaseConfig dbConfig = new DatabaseConfig();
     dbConfig.setAllowCreate(true);
@@ -182,8 +183,9 @@
     if (isShuttingDown.get())
     {
       closeDB(db);
-      // TODO JNR i18n
-      throw new ChangelogException(Message.raw("DB is closing"));
+      throw new ChangelogException(
+          WARN_CANNOT_OPEN_DATABASE_BECAUSE_SHUTDOWN_WAS_REQUESTED.get(
+              databaseName, replicationServer.getServerId()));
     }
     allDbs.add(db);
     return db;
@@ -437,7 +439,7 @@
     }
     catch (DatabaseException e)
     {
-      logError(newErrorMessage(e));
+      logError(newErrorMessage(null, e));
     }
   }
 
@@ -450,19 +452,21 @@
     }
     catch (DatabaseException e)
     {
-      logError(newErrorMessage(e));
+      logError(newErrorMessage(db.getDatabaseName(), e));
     }
   }
 
-  private Message newErrorMessage(DatabaseException e)
+  private Message newErrorMessage(String dbName, DatabaseException e)
   {
-    if (!isShuttingDown.get())
+    final MessageBuilder mb = new MessageBuilder();
+    if (dbName != null)
     {
-      return NOTE_EXCEPTION_CLOSING_DATABASE
-          .get(stackTraceToSingleLineString(e));
+      mb.append(NOTE_EXCEPTION_CLOSING_DATABASE.get(dbName));
     }
-    MessageBuilder mb = new MessageBuilder();
-    mb.append(ERR_ERROR_CLOSING_CHANGELOG_ENV.get());
+    else
+    {
+      mb.append(ERR_ERROR_CLOSING_CHANGELOG_ENV.get());
+    }
     mb.append(" ");
     mb.append(stackTraceToSingleLineString(e));
     return mb.toMessage();

--
Gitblit v1.10.0