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/Index.java |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
index 5756655..cbbd7a3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
@@ -115,6 +115,8 @@
 
   //Thread local area to store per thread cursors.
   private final ThreadLocal<Cursor> curLocal = new ThreadLocal<Cursor>();
+  private final ImportIDSet newImportIDSet = new ImportIDSet(indexEntryLimit,
+                                                indexEntryLimit, maintainCount);
 
   /**
    * Create a new index object.
@@ -312,12 +314,9 @@
   private void
   deleteKey(DatabaseEntry key, ImportIDSet importIdSet,
          DatabaseEntry data) throws DatabaseException {
-
-    ImportIDSet newImportIDSet=null;
     OperationStatus status  = read(null, key, data, LockMode.RMW);
     if(status == OperationStatus.SUCCESS) {
-      newImportIDSet = new ImportIDSet(data.getData().length/8,
-                                                indexEntryLimit, maintainCount);
+      newImportIDSet.clear(false);
       newImportIDSet.remove(data.getData(), importIdSet);
       if(newImportIDSet.isDefined() && (newImportIDSet.size() == 0))
       {
@@ -340,8 +339,7 @@
          DatabaseEntry data) throws DatabaseException {
     OperationStatus status  = read(null, key, data, LockMode.RMW);
     if(status == OperationStatus.SUCCESS) {
-      ImportIDSet newImportIDSet = new ImportIDSet(data.getData().length/8,
-                                                indexEntryLimit, maintainCount);
+      newImportIDSet.clear(false);
       if (newImportIDSet.merge(data.getData(), importIdSet))
       {
         entryLimitExceededCount++;

--
Gitblit v1.10.0