From 6d132ecfd1f8df75c9aef812297b09873726c69b Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Mon, 09 Nov 2009 14:06:17 +0000
Subject: [PATCH] The index state was being  set erroneously when the --rebuildAll flag was not specified. Issue 4293.

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

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
index 818e39c..86841d3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
@@ -2685,6 +2685,7 @@
                           new LinkedHashMap<IndexKey, Index>();
    private final Map<IndexKey, Collection<Index>> extensibleIndexMap =
                                new LinkedHashMap<IndexKey, Collection<Index>>();
+   private final List<VLVIndex> vlvIndexes = new LinkedList<VLVIndex>();
    private DN2ID dn2id = null;
    private DN2URI dn2uri = null;
    private long totalEntries =0;
@@ -2816,10 +2817,67 @@
    {
      processPhaseOne();
      processPhaseTwo();
-     setIndexesTrusted();
+     if(rebuildAll)
+     {
+       setAllIndexesTrusted();
+     }
+     else
+     {
+       setRebuildListIndexesTrusted();
+     }
    }
 
-   private void setIndexesTrusted() throws JebException
+    private void setRebuildListIndexesTrusted()  throws JebException
+    {
+      try
+      {
+        if(dn2id != null)
+        {
+          EntryContainer ec = suffix.getEntryContainer();
+          ec.getID2Children().setTrusted(null,true);
+          ec.getID2Subtree().setTrusted(null, true);
+        }
+        if(!indexMap.isEmpty())
+        {
+          for(Map.Entry<IndexKey, Index> mapEntry : indexMap.entrySet()) {
+            Index index = mapEntry.getValue();
+            index.setTrusted(null, true);
+          }
+        }
+        if(!vlvIndexes.isEmpty())
+        {
+          for(VLVIndex vlvIndex : vlvIndexes)
+          {
+            vlvIndex.setTrusted(null, true);
+          }
+        }
+        if(!extensibleIndexMap.isEmpty())
+        {
+          Collection<Index> subIndexes =
+                  extensibleIndexMap.get(EXTENSIBLE_INDEXER_ID_SUBSTRING);
+          if(subIndexes != null) {
+            for(Index subIndex : subIndexes) {
+              subIndex.setTrusted(null, true);
+            }
+          }
+          Collection<Index> sharedIndexes =
+                  extensibleIndexMap.get(EXTENSIBLE_INDEXER_ID_SHARED);
+          if(sharedIndexes !=null) {
+            for(Index sharedIndex : sharedIndexes) {
+              sharedIndex.setTrusted(null, true);
+            }
+          }
+        }
+      }
+      catch (DatabaseException ex)
+      {
+        Message message =
+                NOTE_JEB_IMPORT_LDIF_TRUSTED_FAILED.get(ex.getMessage());
+        throw new JebException(message);
+      }
+    }
+
+    private void setAllIndexesTrusted() throws JebException
    {
      try {
        suffix.setIndexesTrusted();
@@ -3240,6 +3298,7 @@
    {
      VLVIndex vlvIndex = ec.getVLVIndex(name);
      ec.clearDatabase(vlvIndex);
+     vlvIndexes.add(vlvIndex);
    }
 
    private void clearDN2URI(EntryContainer ec) throws DatabaseException

--
Gitblit v1.10.0