| | |
| | | * |
| | | * |
| | | * Copyright 2006-2009 Sun Microsystems, Inc. |
| | | * Portions copyright 2012 ForgeRock AS. |
| | | */ |
| | | package org.opends.server.tools; |
| | | import org.opends.messages.Message; |
| | |
| | | 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; |
| | |
| | | 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. |
| | |
| | | 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(), |
| | |
| | | } |
| | | |
| | | |
| | | 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(); |
| | | |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | |
| | | try |
| | | { |
| | | ErrorLogPublisher errorLogPublisher = |
| | | ErrorLogPublisher<?> errorLogPublisher = |
| | | TextErrorLogPublisher.getStartupTextErrorPublisher( |
| | | new TextWriter.STREAM(out)); |
| | | DebugLogPublisher debugLogPublisher = |
| | | DebugLogPublisher<?> debugLogPublisher = |
| | | TextDebugLogPublisher.getStartupTextDebugPublisher( |
| | | new TextWriter.STREAM(out)); |
| | | ErrorLogger.addErrorLogPublisher(errorLogPublisher); |
| | |
| | | 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; |
| | |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public Class getTaskClass() { |
| | | public Class<?> getTaskClass() { |
| | | return RebuildTask.class; |
| | | } |
| | | } |