mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Ludovic Poitou
05.34.2015 ae093c879535b2570d81089aa1410eea5ffcc91c
Fix OPENDJ-1918. Reviewed as CR-6794.
Take into account the flag that disable/enable subordinate index in the phase 2 of import.
1 files modified
28 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java 28 ●●●●● patch | view | raw | blame | history
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);
        }
      }
    }
  }