From a5ce1b53bf9304c08bb51639b48bb77085cd62b3 Mon Sep 17 00:00:00 2001
From: davidely <davidely@localhost>
Date: Sun, 02 Sep 2007 04:00:42 +0000
Subject: [PATCH] There are several improvements to the unit test framework in this commit.

---
 opends/src/server/org/opends/server/core/NetworkGroup.java |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/NetworkGroup.java b/opends/src/server/org/opends/server/core/NetworkGroup.java
index 37d63ec..3e62c7f 100644
--- a/opends/src/server/org/opends/server/core/NetworkGroup.java
+++ b/opends/src/server/org/opends/server/core/NetworkGroup.java
@@ -30,6 +30,7 @@
 import static org.opends.server.util.Validator.ensureNotNull;
 
 import java.util.TreeMap;
+import java.util.Collection;
 
 import org.opends.server.types.DN;
 import org.opends.server.types.DirectoryException;
@@ -584,12 +585,34 @@
    * Deregisters all network groups that have been registered.  This should be
    * called when the server is shutting down.
    */
-  public static void deregisterAll()
+  public static void deregisterAllOnShutdown()
   {
     synchronized (registeredNetworkGroupsLock)
     {
+      // Invalidate all NetworkGroups so they cannot accidentally be used
+      // after a restart.
+      Collection<NetworkGroup> networkGroups = registeredNetworkGroups.values();
+      for (NetworkGroup networkGroup: networkGroups)
+      {
+        networkGroup.invalidate();
+      }
+      defaultNetworkGroup.invalidate();
+
       registeredNetworkGroups = new TreeMap<String,NetworkGroup>();
       defaultNetworkGroup = new NetworkGroup ("default");
     }
   }
+
+  /**
+   * We've seen parts of the server hold references to a NetworkGroup
+   * during an in-core server restart.  To help detect when this happens,
+   * we null out the member variables, so we will fail fast with an NPE if an
+   * invalidate NetworkGroup is used.
+   */
+  private void invalidate()
+  {
+    namingContexts = null;
+    networkGroupID = null;
+    rootDSEWorkflowNode = null;
+  }
 }

--
Gitblit v1.10.0