From 43a8d886b8ab0da2358cd1ddc820cd5e5c06478f Mon Sep 17 00:00:00 2001
From: floblanc <floblanc@localhost>
Date: Thu, 30 Oct 2008 09:38:44 +0000
Subject: [PATCH] Fix Issue 3540:  Network Group: Uncaught java.lang.OutOfMemoryError while looping on calling dsconfig setting config properties

---
 opends/src/server/org/opends/server/core/networkgroups/ResourceLimits.java |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/networkgroups/ResourceLimits.java b/opends/src/server/org/opends/server/core/networkgroups/ResourceLimits.java
index 04a5d17..6ed1ed7 100644
--- a/opends/src/server/org/opends/server/core/networkgroups/ResourceLimits.java
+++ b/opends/src/server/org/opends/server/core/networkgroups/ResourceLimits.java
@@ -87,6 +87,9 @@
   // The lock for the counter numConnections and the map connectionsPerIpMap
   Object connMutex = new Object();
 
+  // The current configuration
+  private NetworkGroupResourceLimitsCfg config = null;
+
   /**
    * Constructor.
    *
@@ -111,6 +114,10 @@
     numConnections = 0;
     connectionsPerIpMap = new HashMap<String, Integer>();
     isConfigured = false;
+    if (config != null) {
+      config.removeChangeListener(this);
+      config = null;
+    }
   }
 
   /**
@@ -131,7 +138,10 @@
       minSearchSubstringLength = resourcesCfg.getMinSubstringLength();
       connectionsPerIpMap = new HashMap<String, Integer>();
 
-      resourcesCfg.addChangeListener(this);
+      if (config == null) {
+        resourcesCfg.addChangeListener(this);
+      }
+      config = resourcesCfg;
       isConfigured = true;
     } else {
       resetLimits();

--
Gitblit v1.10.0