From 4640fec656d96f3891a5534948f0b4c81df2f89d Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 26 Jan 2012 23:53:08 +0000
Subject: [PATCH] Fix OPENDJ-406: Add support for rebuilding all degraded indexes to rebuild-index tool
---
opends/src/server/org/opends/server/tools/RebuildIndex.java | 63 ++++++++++++++++++++++++++++---
1 files changed, 56 insertions(+), 7 deletions(-)
diff --git a/opends/src/server/org/opends/server/tools/RebuildIndex.java b/opends/src/server/org/opends/server/tools/RebuildIndex.java
index c26b30f..b5804ff 100644
--- a/opends/src/server/org/opends/server/tools/RebuildIndex.java
+++ b/opends/src/server/org/opends/server/tools/RebuildIndex.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
+ * Portions copyright 2012 ForgeRock AS.
*/
package org.opends.server.tools;
import org.opends.messages.Message;
@@ -60,6 +61,7 @@
import org.opends.server.api.DebugLogPublisher;
import org.opends.server.backends.jeb.BackendImpl;
import org.opends.server.backends.jeb.RebuildConfig;
+import org.opends.server.backends.jeb.RebuildConfig.RebuildMode;
import org.opends.server.admin.std.server.BackendCfg;
import java.io.OutputStream;
@@ -81,7 +83,8 @@
private StringArgument baseDNString = null;
private StringArgument indexList = null;
private StringArgument tmpDirectory = null;
- private BooleanArgument rebuildAll = null;
+ private BooleanArgument rebuildAll = null;
+ private BooleanArgument rebuildDegraded = null;
/**
* Processes the command-line arguments and invokes the rebuild process.
@@ -195,6 +198,12 @@
argParser.addArgument(rebuildAll);
+ rebuildDegraded =
+ new BooleanArgument("rebuildDegraded", null, "rebuildDegraded",
+ INFO_REBUILDINDEX_DESCRIPTION_REBUILD_DEGRADED.get());
+ argParser.addArgument(rebuildDegraded);
+
+
tmpDirectory =
new StringArgument("tmpdirectory", null, "tmpdirectory", false,
false, true, INFO_REBUILDINDEX_TEMP_DIR_PLACEHOLDER.get(),
@@ -251,7 +260,8 @@
}
- if (indexList.getValues().size() <= 0 && !rebuildAll.isPresent())
+ if (indexList.getValues().size() <= 0 && !rebuildAll.isPresent()
+ && !rebuildDegraded.isPresent())
{
Message message = ERR_REBUILDINDEX_REQUIRES_AT_LEAST_ONE_INDEX.get();
@@ -267,6 +277,23 @@
out.println(argParser.getUsage());
return 1;
}
+
+ if(rebuildDegraded.isPresent() && indexList.isPresent())
+ {
+ Message msg = ERR_REBUILDINDEX_REBUILD_DEGRADED_ERROR.get();
+ err.println(wrapText(msg, MAX_LINE_WIDTH));
+ out.println(argParser.getUsage());
+ return 1;
+ }
+
+ if(rebuildAll.isPresent() && rebuildDegraded.isPresent())
+ {
+ Message msg = ERR_REBUILDINDEX_REBUILD_ALL_DEGRADED_ERROR.get();
+ err.println(wrapText(msg, MAX_LINE_WIDTH));
+ out.println(argParser.getUsage());
+ return 1;
+ }
+
return process(argParser, initializeServer, out, err);
}
@@ -402,10 +429,10 @@
try
{
- ErrorLogPublisher errorLogPublisher =
+ ErrorLogPublisher<?> errorLogPublisher =
TextErrorLogPublisher.getStartupTextErrorPublisher(
new TextWriter.STREAM(out));
- DebugLogPublisher debugLogPublisher =
+ DebugLogPublisher<?> debugLogPublisher =
TextDebugLogPublisher.getStartupTextDebugPublisher(
new TextWriter.STREAM(out));
ErrorLogger.addErrorLogPublisher(errorLogPublisher);
@@ -520,8 +547,20 @@
return 1;
}
- rebuildConfig.setRebuildAll(rebuildAll.isPresent());
- rebuildConfig.setTmpDirectory(tmpDirectory.getValue());
+ if (rebuildAll.isPresent())
+ {
+ rebuildConfig.setRebuildMode(RebuildMode.ALL);
+ }
+ else if (rebuildDegraded.isPresent())
+ {
+ rebuildConfig.setRebuildMode(RebuildMode.DEGRADED);
+ }
+ else
+ {
+ rebuildConfig.setRebuildMode(RebuildMode.USER_DEFINED);
+ }
+
+ rebuildConfig.setTmpDirectory(tmpDirectory.getValue());
// Launch the rebuild process.
int returnCode = 0;
@@ -611,6 +650,16 @@
attributes.add(
new LDAPAttribute(ATTR_REBUILD_INDEX, values));
}
+
+
+ if (rebuildDegraded.getValue() != null &&
+ !rebuildDegraded.getValue().equals(
+ rebuildDegraded.getDefaultValue())) {
+ values = new ArrayList<ByteString>(1);
+ values.add(ByteString.valueOf(REBUILD_DEGRADED));
+ attributes.add(
+ new LDAPAttribute(ATTR_REBUILD_INDEX, values));
+ }
}
/**
@@ -623,7 +672,7 @@
/**
* {@inheritDoc}
*/
- public Class getTaskClass() {
+ public Class<?> getTaskClass() {
return RebuildTask.class;
}
}
--
Gitblit v1.10.0