From 1b66c5e83ffbd4e8ffa7a6c94add9262da08c68e Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Mon, 26 May 2008 15:48:09 +0000
Subject: [PATCH] Fix 3276 - dsreplication post-external-initialization should return (an error) if replication plugin is stopped

---
 opendj-sdk/opends/src/server/org/opends/server/tasks/SetGenerationIdTask.java            |   10 +++++++++-
 opendj-sdk/opends/src/messages/messages/replication.properties                           |    5 ++++-
 opendj-sdk/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java |   11 +++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/opendj-sdk/opends/src/messages/messages/replication.properties b/opendj-sdk/opends/src/messages/messages/replication.properties
index 86bd3d6..9efd1c4 100644
--- a/opendj-sdk/opends/src/messages/messages/replication.properties
+++ b/opendj-sdk/opends/src/messages/messages/replication.properties
@@ -275,4 +275,7 @@
 NOTICE_IGNORING_REMOTE_MONITOR_DATA_116=Some monitor data have been received \
  from the server with server ID %s too late and are ignored
 NOTICE_SERVER_STATE_RECOVERY_117=ServerState recovery for domain %s, \
-updated with changeNumber %s 
\ No newline at end of file
+updated with changeNumber %s
+SEVERE_ERR_RESET_GENERATION_CONN_ERR_ID_118=The generation ID could not be \
+reset for domain %s because it is NOT connected to the replication. You should \
+check in the configuration that the domain is enabled
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java b/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
index 3f21859..05a9386 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
@@ -2525,13 +2525,24 @@
    * their change dbs.
    *
    * @param generationIdNewValue The new value of the generation Id.
+   * @throws DirectoryException when an error occurs
    */
   public void resetGenerationId(Long generationIdNewValue)
+  throws DirectoryException
   {
     if (debugEnabled())
       TRACER.debugInfo(
           this.getName() + "resetGenerationId" + generationIdNewValue);
 
+    if (!isConnected())
+    {
+      ResultCode resultCode = ResultCode.OTHER;
+      Message message = ERR_RESET_GENERATION_CONN_ERR_ID.get(
+          baseDN.toNormalizedString());
+      throw new DirectoryException(
+         resultCode, message);
+    }
+
     ResetGenerationId genIdMessage = null;
     if (generationIdNewValue == null)
     {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/SetGenerationIdTask.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/SetGenerationIdTask.java
index 2ccaf61..f6b9a84 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/SetGenerationIdTask.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tasks/SetGenerationIdTask.java
@@ -150,7 +150,15 @@
     debugInfo("setGenerationIdTask is starting on domain%s" +
         domain.getBaseDN());
 
-    domain.resetGenerationId(generationId);
+    try
+    {
+      domain.resetGenerationId(generationId);
+    }
+    catch(DirectoryException de)
+    {
+      logError(de.getMessageObject());
+      return TaskState.STOPPED_BY_ERROR;
+    }
 
     debugInfo("setGenerationIdTask is ending SUCCESSFULLY");
     return TaskState.COMPLETED_SUCCESSFULLY;

--
Gitblit v1.10.0