From 6e562514f52ba0c0f79bdca84cd2acd506b9cd21 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Tue, 08 Nov 2016 17:35:52 +0000
Subject: [PATCH] OPENDJ-3417 Fix functional tests failures

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java                                  |    7 ++-----
 opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java                                |   10 ++++++++++
 opendj-server-legacy/src/main/java/org/opends/server/tasks/RestartTaskThread.java                                  |    4 +---
 opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java |   10 +++-------
 opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java                                       |    1 +
 opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java                                          |    1 +
 6 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
index 87a8643..2a70ff1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
@@ -546,11 +546,8 @@
       case SINGLE_LEVEL:
       case WHOLE_SUBTREE:
       case SUBORDINATES:
-        throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
-            ERR_ROOTDSE_NOT_SUPPORTED_SCOPE.get(
-                searchOperation.getConnectionID(),
-                searchOperation.getOperationID(),
-                searchOperation.getScope()));
+        // nothing to return
+        break;
       default:
         LocalizableMessage message = ERR_ROOTDSE_INVALID_SEARCH_SCOPE.
             get(searchOperation.getConnectionID(),
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
index f3d5a89..ff8167b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
@@ -460,6 +460,16 @@
   public Set<BackendAndName> getSubordinateBackends(DN baseDN)
   {
     final Set<BackendAndName> subs = new HashSet<>();
+    if (baseDN.isRootDN())
+    {
+      Map<DN, LocalBackend<?>> namingContexts = getAllPublicNamingContexts();
+      for (Map.Entry<DN, LocalBackend<?>> b : namingContexts.entrySet())
+      {
+        subs.add(new BackendAndName(b.getValue(), b.getKey()));
+      }
+      return subs;
+    }
+
     LocalBackend<?> backend = getLocalBackendWithBaseDN(baseDN);
     if (backend == null)
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestartTaskThread.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestartTaskThread.java
index 8a3f0e3..4e501d3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestartTaskThread.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestartTaskThread.java
@@ -19,7 +19,6 @@
 import org.forgerock.i18n.LocalizableMessage;
 
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.api.DirectoryThread;
 
 /**
  * This class defines a thread that will be spawned to invoke a Directory Server
@@ -35,8 +34,7 @@
  * daemon thread.  These changes are needed to guarantee that the JVM does not
  * exit before we get a chance to restart it if all non-daemon threads go away.
  */
-public class RestartTaskThread
-       extends DirectoryThread
+public class RestartTaskThread extends Thread
 {
   /**
    * The fully-qualified name of this class.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java
index c091bca..56cda31 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ShutdownTask.java
@@ -169,6 +169,7 @@
       // Since the process will not be killed, we can proceed exactly the same
       // way with or without windows service configured.
       RestartTaskThread restartThread = new RestartTaskThread(shutdownMessage);
+      restartThread.setDaemon(false);
       restartThread.start();
     }
     else
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java
index 38f09b8..7510190 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/RestoreDB.java
@@ -280,6 +280,7 @@
       try
       {
         new DirectoryServer.InitializationBuilder(configFile.getValue())
+            .requireCryptoServices()
             .requireErrorAndDebugLogPublisher(out, err)
             .initialize();
       }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
index f59a2b5..8cd729d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
@@ -743,15 +743,11 @@
 
     executeOperation(operation, backendAndName.getBackend());
 
-    if (!entryDN.isRootDN())
+    // For subtree search operation we need to go through the subordinate nodes.
+    if (operation.getOperationType() == OperationType.SEARCH)
     {
-      // For subtree search operation we need to go through the subordinate nodes.
-      if (operation.getOperationType() == OperationType.SEARCH)
-      {
-        executeSearchOnSubordinates((SearchOperation) operation, backendAndName.getBaseDn());
-      }
+      executeSearchOnSubordinates((SearchOperation) operation, backendAndName.getBaseDn());
     }
-
     return true;
   }
 

--
Gitblit v1.10.0