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