From ff24232c35db8b684d5ba165eba219d855b02666 Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Wed, 16 Sep 2009 21:11:23 +0000
Subject: [PATCH] Correct importing LDIF with large numbers of subtrees using small JVM heaps (128MB-512MB). Also, turn cleaner thread off.

---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/ImportIDSet.java |   35 +++++++++++++++++++++++++++++++++--
 1 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/ImportIDSet.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/ImportIDSet.java
index 6814363..6e26ed2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/ImportIDSet.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/ImportIDSet.java
@@ -56,8 +56,8 @@
 
   //Key related to an ID set.
   private byte[] key;
-  private int limit;
-  private boolean doCount;
+  private int limit = -1;
+  private boolean doCount = false;
 
 
   /**
@@ -75,6 +75,32 @@
     this.doCount = doCount;
   }
 
+  /**
+   * Create an empty import instance.
+  */
+  public ImportIDSet()
+  {
+
+  }
+
+  /**
+   * Clear the set so it can be reused again. The boolean indexParam specifies
+   * if the index parameters should be cleared also.
+   *
+   * @param indexParams <CODE>true</CODE> if the index parameters should be
+   *                    cleared.
+   */
+  public void clear(boolean indexParams)
+  {
+    undefinedSize = 0;
+    isDefined = true;
+    count = 0;
+    if(indexParams)
+    {
+      doCount = false;
+      limit = -1;
+    }
+  }
 
   /**
    * Return if an import ID set is defined or not.
@@ -115,6 +141,11 @@
   public void
   merge(ImportIDSet importIDSet)
   {
+    if(limit == -1)
+    {
+      doCount = importIDSet.doCount;
+      limit = importIDSet.limit;
+    }
     if(!isDefined() && !importIDSet.isDefined()) //both undefined
     {
       if(doCount)

--
Gitblit v1.10.0