From bed658f1ce4871b47cdbb882fdd19f4728ee3de3 Mon Sep 17 00:00:00 2001
From: coulbeck <coulbeck@localhost>
Date: Mon, 30 Apr 2007 20:53:21 +0000
Subject: [PATCH] Fix for issue #1559: backend NPE upon search when server corrupt. We were registering the backend in the server before we actually initialized it.

---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java |   60 ++++++++++++++++++++++++++----------------------------------
 1 files changed, 26 insertions(+), 34 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
index 6cd7658..bd5a2c2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -224,34 +224,6 @@
     config = new Config();
     config.initializeConfig(backendCfg, baseDNs);
 
-    for (DN dn : baseDNs)
-    {
-      try
-      {
-        DirectoryServer.registerBaseDN(dn, this, false, false);
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
-        String message = getMessage(msgID, String.valueOf(dn),
-                                    String.valueOf(e));
-        throw new InitializationException(msgID, message, e);
-      }
-    }
-
-/*
-    {
-      String message = getMessage(MSGID_JEB_SUFFIXES_NOT_SPECIFIED);
-      throw new InitializationException(MSGID_JEB_SUFFIXES_NOT_SPECIFIED,
-                                        message);
-    }
-*/
-
     // Open the database environment
     try
     {
@@ -269,12 +241,6 @@
       throw new InitializationException(MSGID_JEB_OPEN_ENV_FAIL, message, e);
     }
 
-    // Register a monitor provider for the environment.
-    MonitorProvider monitorProvider =
-        rootContainer.getMonitorProvider();
-    monitorProviders.add(monitorProvider);
-    DirectoryServer.registerMonitorProvider(monitorProvider);
-
     try
     {
       rootContainer.openEntryContainers(baseDNs);
@@ -314,6 +280,32 @@
                                         message, databaseException);
     }
 
+    for (DN dn : baseDNs)
+    {
+      try
+      {
+        DirectoryServer.registerBaseDN(dn, this, false, false);
+      }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          debugCaught(DebugLogLevel.ERROR, e);
+        }
+
+        int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
+        String message = getMessage(msgID, String.valueOf(dn),
+                                    String.valueOf(e));
+        throw new InitializationException(msgID, message, e);
+      }
+    }
+
+    // Register a monitor provider for the environment.
+    MonitorProvider monitorProvider =
+        rootContainer.getMonitorProvider();
+    monitorProviders.add(monitorProvider);
+    DirectoryServer.registerMonitorProvider(monitorProvider);
+
     // Register this backend as a change listener.
     currentConfig = backendCfg;
     backendCfg.addJEChangeListener(this);

--
Gitblit v1.10.0