From 3a3e25cd66f19b89dec18605635c61cb2ff0d2ee Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Fri, 04 Apr 2008 03:31:02 +0000
Subject: [PATCH] Performance improvement for when substring indexes move from defined to undefined.

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

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/BufferManager.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/BufferManager.java
index 1835c05..3af10c5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/BufferManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/BufferManager.java
@@ -147,11 +147,18 @@
         KeyHashElement curElem = iter.next();
         //Never flush undefined elements.
         if(curElem.isDefined()) {
+          int oldSize = curElem.getMemorySize();
           Index index = curElem.getIndex();
           index.insert(null, new DatabaseEntry(curElem.getKey()),
                   curElem.getIDSet());
-          memoryUsage -= TREEMAP_ENTRY_OVERHEAD + curElem.getMemorySize();
-          iter.remove();
+          if(curElem.isDefined()) {
+             memoryUsage -= TREEMAP_ENTRY_OVERHEAD + curElem.getMemorySize();
+             iter.remove();
+          } else {
+            //Went undefined don't remove the element, just substract the
+            //memory size difference.
+            memoryUsage -= (oldSize - curElem.getMemorySize());
+          }
         }
       } else {
         //Wrapped around, start at the first element.

--
Gitblit v1.10.0