From 5c47ab553c1fa329dbad90f5ecfd98b84e518cac Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Mon, 26 Mar 2007 07:17:13 +0000
Subject: [PATCH] This commit allows to complete issues 504, 505 and 507 by using the new import/export/backup/restore interface to get notifications of import and restore and then resynchronize the server approprietely.

---
 opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java b/opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java
index c5b0565..8082c1c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tasks/RestoreTask.java
@@ -289,6 +289,11 @@
     RestoreConfig restoreConfig = new RestoreConfig(backupDir, backupID,
                                                     verifyOnly);
 
+    // Notify the task listeners that a restore is going to start
+    // this must be done before disabling the backend to allow
+    // listener to get access to the backend configuration
+    // and to take appropriate actions.
+    DirectoryServer.notifyRestoreBeginning(backend, restoreConfig);
 
     // Disable the backend.
     try
@@ -307,7 +312,6 @@
       return TaskState.STOPPED_BY_ERROR;
     }
 
-
     // From here we must make sure to re-enable the backend before returning.
     boolean errorsEncountered = false;
     try
@@ -321,9 +325,7 @@
           // Perform the restore.
           try
           {
-            DirectoryServer.notifyRestoreBeginning(backend, restoreConfig);
             backend.restoreBackup(configEntry, restoreConfig);
-            DirectoryServer.notifyRestoreEnded(backend, restoreConfig, true);
           }
           catch (DirectoryException de)
           {
@@ -362,6 +364,10 @@
       try
       {
         TaskUtils.setBackendEnabled(configEntry, true);
+        // it is necessary to retrieve the backend structure again
+        // because disabling and enabling it again may have resulted
+        // in a new backend being registered to the server.
+        backend = DirectoryServer.getBackend(backendID);
       }
       catch (DirectoryException e)
       {
@@ -374,6 +380,7 @@
                  e.getErrorMessage(), e.getErrorMessageID());
         errorsEncountered = true;
       }
+      DirectoryServer.notifyRestoreEnded(backend, restoreConfig, true);
     }
 
     if (errorsEncountered)

--
Gitblit v1.10.0