From ae093c879535b2570d81089aa1410eea5ffcc91c Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Tue, 05 May 2015 12:34:46 +0000
Subject: [PATCH] Fix OPENDJ-1918. Reviewed as CR-6794. Take into account the flag that disable/enable subordinate index in the phase 2 of import.

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java
index c435c2d..1c90b49 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java
@@ -2145,6 +2145,8 @@
       private final DatabaseEntry dnKey, dnValue;
       private final TreeMap<ByteBuffer, EntryID> parentIDMap;
       private final EntryContainer entryContainer;
+      private final boolean isSubordinatesEnabled;
+      // Fields below are only needed if the isSubordinatesEnabled boolean is true.
       private final Map<byte[], ImportIDSet> id2childTree;
       private final Map<byte[], ImportIDSet> id2subtreeTree;
       private final int childLimit, subTreeLimit;
@@ -2153,17 +2155,17 @@
       DNState(EntryContainer entryContainer)
       {
         this.entryContainer = entryContainer;
-        parentIDMap = new TreeMap<ByteBuffer, EntryID>();
-        Comparator<byte[]> childComparator =
-            entryContainer.getID2Children().getComparator();
-        id2childTree = new TreeMap<byte[], ImportIDSet>(childComparator);
+        parentIDMap = new TreeMap<>();
+
+        isSubordinatesEnabled =  backendConfiguration.isSubordinateIndexesEnabled();
+        Comparator<byte[]> childComparator = entryContainer.getID2Children().getComparator();
+        id2childTree = new TreeMap<>(childComparator);
         childLimit = entryContainer.getID2Children().getIndexEntryLimit();
-        childDoCount = entryContainer.getID2Children().getMaintainCount();
-        Comparator<byte[]> subComparator =
-            entryContainer.getID2Subtree().getComparator();
+        childDoCount = isSubordinatesEnabled && entryContainer.getID2Children().getMaintainCount();
+        Comparator<byte[]> subComparator = entryContainer.getID2Subtree().getComparator();
         subTreeLimit = entryContainer.getID2Subtree().getIndexEntryLimit();
-        subTreeDoCount = entryContainer.getID2Subtree().getMaintainCount();
-        id2subtreeTree = new TreeMap<byte[], ImportIDSet>(subComparator);
+        subTreeDoCount = isSubordinatesEnabled && entryContainer.getID2Subtree().getMaintainCount();
+        id2subtreeTree = new TreeMap<>(subComparator);
         dnKey = new DatabaseEntry();
         dnValue = new DatabaseEntry();
         lastDN = ByteBuffer.allocate(BYTE_BUFFER_CAPACITY);
@@ -2379,7 +2381,7 @@
       {
         entryContainer.getDN2ID().put(null, dnKey, dnValue);
         indexMgr.addTotDNCount(1);
-        if (parentDN != null)
+        if (isSubordinatesEnabled && parentDN != null)
         {
           id2child(entryID);
           id2SubTree(entryID);
@@ -2404,8 +2406,10 @@
 
       public void flush()
       {
-        flushMapToDB(id2childTree, entryContainer.getID2Children(), false);
-        flushMapToDB(id2subtreeTree, entryContainer.getID2Subtree(), false);
+        if (isSubordinatesEnabled) {
+          flushMapToDB(id2childTree, entryContainer.getID2Children(), false);
+          flushMapToDB(id2subtreeTree, entryContainer.getID2Subtree(), false);
+        }
       }
     }
   }

--
Gitblit v1.10.0