From 3e7410b2ec4ceeef110ed4864d86cd56993512fe Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Sat, 26 Sep 2009 18:33:49 +0000
Subject: [PATCH] Rebuild index using new import engine.
---
opends/src/server/org/opends/server/tasks/RebuildTask.java | 68 ++++++++++++++++++++--------------
1 files changed, 40 insertions(+), 28 deletions(-)
diff --git a/opends/src/server/org/opends/server/tasks/RebuildTask.java b/opends/src/server/org/opends/server/tasks/RebuildTask.java
index a8fa88a..e7a800b 100644
--- a/opends/src/server/org/opends/server/tasks/RebuildTask.java
+++ b/opends/src/server/org/opends/server/tasks/RebuildTask.java
@@ -52,26 +52,10 @@
import static org.opends.server.util.StaticUtils.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
import org.opends.server.loggers.debug.DebugTracer;
-import static org.opends.messages.TaskMessages.
- ERR_TASK_INDEXREBUILD_INSUFFICIENT_PRIVILEGES;
-import static org.opends.messages.ToolMessages.
- ERR_REBUILDINDEX_ERROR_DURING_REBUILD;
-import static org.opends.messages.ToolMessages.
- ERR_REBUILDINDEX_WRONG_BACKEND_TYPE;
-import static org.opends.messages.ToolMessages.
- ERR_NO_BACKENDS_FOR_BASE;
-import static org.opends.messages.ToolMessages.
- ERR_CANNOT_DECODE_BASE_DN;
-import static org.opends.messages.ToolMessages.
- ERR_REBUILDINDEX_CANNOT_EXCLUSIVE_LOCK_BACKEND;
-import static org.opends.messages.ToolMessages.
- WARN_REBUILDINDEX_CANNOT_UNLOCK_BACKEND;
-import static org.opends.server.config.ConfigConstants.
- ATTR_REBUILD_BASE_DN;
-import static org.opends.server.config.ConfigConstants.
- ATTR_REBUILD_INDEX;
-import static org.opends.server.config.ConfigConstants.
- ATTR_REBUILD_MAX_THREADS;
+import static org.opends.messages.TaskMessages.*;
+import static org.opends.messages.ToolMessages.*;
+import static org.opends.server.config.ConfigConstants.*;
+
import java.util.List;
import java.util.ArrayList;
@@ -89,7 +73,8 @@
String baseDN = null;
ArrayList<String> indexes = null;
- int maxThreads = -1;
+ private String tmpDirectory = null;
+ private boolean rebuildAll = false;
/**
* {@inheritDoc}
@@ -123,14 +108,14 @@
AttributeType typeBaseDN;
AttributeType typeIndex;
- AttributeType typeMaxThreads;
+ AttributeType typeTmpDirectory;
typeBaseDN =
getAttributeType(ATTR_REBUILD_BASE_DN, true);
typeIndex =
getAttributeType(ATTR_REBUILD_INDEX, true);
- typeMaxThreads =
- getAttributeType(ATTR_REBUILD_MAX_THREADS, true);
+ typeTmpDirectory =
+ getAttributeType(ATTR_REBUILD_TMP_DIRECTORY, true);
List<Attribute> attrList;
@@ -140,9 +125,32 @@
attrList = taskEntry.getAttribute(typeIndex);
indexes = TaskUtils.getMultiValueString(attrList);
+ if(isRebuildAll(indexes))
+ {
+ if(indexes.size() != 1)
+ {
+ Message msg = ERR_TASK_INDEXREBUILD_ALL_ERROR.get();
+ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, msg);
+ }
+ rebuildAll = true;
+ indexes.clear();
+ }
- attrList = taskEntry.getAttribute(typeMaxThreads);
- maxThreads = TaskUtils.getSingleValueInteger(attrList, -1);
+ attrList = taskEntry.getAttribute(typeTmpDirectory);
+ tmpDirectory = TaskUtils.getSingleValueString(attrList);
+
+ }
+
+ private boolean isRebuildAll(List<String> indexList)
+ {
+ for(String s : indexList)
+ {
+ if(s.equalsIgnoreCase(REBUILD_ALL))
+ {
+ return true;
+ }
+ }
+ return false;
}
/**
@@ -169,7 +177,6 @@
rebuildConfig.addRebuildIndex(index);
}
- rebuildConfig.setMaxRebuildThreads(maxThreads);
Backend backend =
DirectoryServer.getBackendWithBaseDN(rebuildConfig.getBaseDN());
@@ -228,7 +235,12 @@
return TaskState.STOPPED_BY_ERROR;
}
-
+ if(tmpDirectory == null)
+ {
+ tmpDirectory = "import-tmp";
+ }
+ rebuildConfig.setTmpDirectory(tmpDirectory);
+ rebuildConfig.setRebuildAll(rebuildAll);
TaskState returnCode = TaskState.COMPLETED_SUCCESSFULLY;
// Launch the rebuild process.
try
--
Gitblit v1.10.0