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