From 891b6b1cf89c7bbcd9796d4d664665ec2ec89dfe Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 17 Dec 2015 16:38:34 +0000
Subject: [PATCH] OPENDJ-2561 Rebuild-index: vlv cannot seem to be rebuilt

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
index ad6f42b..48c48cc 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
@@ -363,7 +363,7 @@
      *
      * @throws InitializationException
      *           if rebuildList contains an invalid/non-existing attribute/index name.
-     **/
+     */
     private static final Set<String> buildUserDefinedIndexNames(EntryContainer entryContainer,
         Collection<String> rebuildList) throws InitializationException
     {
@@ -371,10 +371,11 @@
       for (String name : rebuildList)
       {
         final String parts[] = name.split("\\.");
-        final AttributeIndex attrIndex = findAttributeIndex(entryContainer, parts[0]);
         if (parts.length == 1)
         {
           // Add all indexes of this attribute
+          // for example: "cn" or "sn"
+          final AttributeIndex attrIndex = findAttributeIndex(entryContainer, parts[0]);
           for (Tree index : attrIndex.getNameToIndexes().values())
           {
             indexNames.add(index.getName().getIndexId());
@@ -383,14 +384,18 @@
         else if (parts.length == 2)
         {
           // First, assume the supplied name is a valid index name ...
+          // for example: "cn.substring", "vlv.someVlvIndex", "cn.caseIgnoreMatch"
+          // or "cn.caseIgnoreSubstringsMatch:6"
           final SelectIndexName selector = new SelectIndexName();
           visitIndexes(entryContainer, visitOnlyIndexes(Arrays.asList(name), selector));
           indexNames.addAll(selector.getSelectedIndexNames());
           if (selector.getSelectedIndexNames().isEmpty())
           {
             // ... if not, assume the supplied name identify an attributeType.indexType
+            // for example: aliases like "cn.substring" could not be found by the previous step
             try
             {
+              final AttributeIndex attrIndex = findAttributeIndex(entryContainer, parts[0]);
               indexNames.addAll(getIndexNames(IndexType.valueOf(parts[1].toUpperCase()), attrIndex));
             }
             catch (IllegalArgumentException e)
@@ -3351,27 +3356,22 @@
     }
   }
 
-  private static int visitIndexes(final EntryContainer entryContainer, IndexVisitor visitor)
+  private static void visitIndexes(final EntryContainer entryContainer, IndexVisitor visitor)
   {
-    int nbVisited = 0;
     for (AttributeIndex attribute : entryContainer.getAttributeIndexes())
     {
       for (MatchingRuleIndex index : attribute.getNameToIndexes().values())
       {
         visitor.visitAttributeIndex(index);
-        nbVisited++;
       }
     }
     for (VLVIndex index : entryContainer.getVLVIndexes())
     {
       visitor.visitVLVIndex(index);
-      nbVisited++;
     }
     visitor.visitSystemIndex(entryContainer.getDN2ID());
     visitor.visitSystemIndex(entryContainer.getID2ChildrenCount());
     visitor.visitSystemIndex(entryContainer.getDN2URI());
-    nbVisited += 2;
-    return nbVisited;
   }
 
   /** Visitor pattern allowing to process all type of indexes. */

--
Gitblit v1.10.0