opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java
@@ -122,6 +122,7 @@ private SubCommand initializeAllReplicationSubCmd; private SubCommand postExternalInitializationSubCmd; private SubCommand preExternalInitializationSubCmd; private SubCommand resetChangelogNumber; private SubCommand statusReplicationSubCmd; private SubCommand purgeHistoricalSubCmd; @@ -195,6 +196,9 @@ /** The 'maximumDuration' argument for the purge of historical. */ IntegerArgument maximumDurationArg; /** the 'change-number' argument for task reset-changenumber. */ IntegerArgument resetChangeNumber; /** The text of the enable replication subcommand. */ static final String ENABLE_REPLICATION_SUBCMD_NAME = "enable"; /** The text of the disable replication subcommand. */ @@ -207,6 +211,8 @@ static final String PRE_EXTERNAL_INITIALIZATION_SUBCMD_NAME = "pre-external-initialization"; /** The text of the initialize all replication subcommand. */ static final String POST_EXTERNAL_INITIALIZATION_SUBCMD_NAME = "post-external-initialization"; /** The text of the reset changenumber subcommand. */ static final String RESET_CHANGE_NUMBER_SUBCMD_NAME = "reset-change-number"; /** The text of the status replication subcommand. */ static final String STATUS_REPLICATION_SUBCMD_NAME = "status"; @@ -226,9 +232,8 @@ ReplicationCliArgumentParser(String mainClassName) { super(mainClassName, INFO_REPLICATION_TOOL_DESCRIPTION.get(ENABLE_REPLICATION_SUBCMD_NAME, INITIALIZE_REPLICATION_SUBCMD_NAME), false); INFO_REPLICATION_TOOL_DESCRIPTION.get(ENABLE_REPLICATION_SUBCMD_NAME, INITIALIZE_REPLICATION_SUBCMD_NAME), false); setShortToolDescription(REF_SHORT_DESC_DSREPLICATION.get()); setVersionHandler(new DirectoryServerVersionHandler()); } @@ -257,10 +262,12 @@ } createEnableReplicationSubCommand(); createDisableReplicationSubCommand(); createRelatedServersOptions(); createInitializeReplicationSubCommand(); createInitializeAllReplicationSubCommand(); createPreExternalInitializationSubCommand(); createPostExternalInitializationSubCommand(); createResetChangeNumberSubCommand(); createStatusReplicationSubCommand(); createPurgeHistoricalSubCommand(); } @@ -328,6 +335,7 @@ // Check that we have the required data if (!baseDNsArg.isPresent() && !isStatusReplicationSubcommand() && !isResetChangeNumber() && !disableAllArg.isPresent() && !disableReplicationServerArg.isPresent()) { @@ -696,8 +704,18 @@ * Creates the initialize replication subcommand and all the specific options * for the subcommand. */ private void createInitializeReplicationSubCommand() throws ArgumentException private void createInitializeReplicationSubCommand() throws ArgumentException { initializeReplicationSubCmd = new SubCommand(this, INITIALIZE_REPLICATION_SUBCMD_NAME, INFO_DESCRIPTION_SUBCMD_INITIALIZE_REPLICATION.get(INITIALIZE_ALL_REPLICATION_SUBCMD_NAME)); Argument[] argsToAdd = { hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg }; setSubCommandArguments(initializeReplicationSubCmd, argsToAdd); } private void createRelatedServersOptions() throws ArgumentException { hostNameSourceArg = new StringArgument("hostSource", OPTION_SHORT_HOST, "hostSource", false, false, true, INFO_HOST_PLACEHOLDER.get(), @@ -723,21 +741,6 @@ true, 1, true, 65336, INFO_DESCRIPTION_INITIALIZE_REPLICATION_SERVER_PORT_DESTINATION.get()); initializeReplicationSubCmd = new SubCommand(this, INITIALIZE_REPLICATION_SUBCMD_NAME, INFO_DESCRIPTION_SUBCMD_INITIALIZE_REPLICATION.get( INITIALIZE_ALL_REPLICATION_SUBCMD_NAME)); Argument[] argsToAdd = { hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg }; for (Argument arg : argsToAdd) { arg.setPropertyName(arg.getLongIdentifier()); initializeReplicationSubCmd.addArgument(arg); } } /** @@ -817,6 +820,33 @@ } } private void createResetChangeNumberSubCommand() throws ArgumentException { resetChangelogNumber = new SubCommand(this, RESET_CHANGE_NUMBER_SUBCMD_NAME, INFO_DESCRIPTION_RESET_CHANGE_NUMBER.get()); resetChangeNumber = newChangeNumberArgument(); Argument[] argsToAdd = { hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg, resetChangeNumber }; setSubCommandArguments(resetChangelogNumber, argsToAdd); } private void setSubCommandArguments(SubCommand subCommand, Argument[] argsToAdd) throws ArgumentException { for (Argument arg : argsToAdd) { arg.setPropertyName(arg.getLongIdentifier()); subCommand.addArgument(arg); } } IntegerArgument newChangeNumberArgument() throws ArgumentException { return new IntegerArgument("change-number", null, "change-number", false, true, INFO_CHANGE_NUMBER_PLACEHOLDER.get(), INFO_DESCRIPTION_START_CHANGE_NUMBER.get()); } /** * Creates the status replication subcommand and all the specific options * for the subcommand. Note: this method assumes that @@ -890,8 +920,8 @@ /** * Tells whether the user specified to have an interactive operation or not. * This method must be called after calling parseArguments. * @return <CODE>true</CODE> if the user specified to have an interactive * operation and <CODE>false</CODE> otherwise. * @return {@code true} if the user specified to have an interactive * operation and {@code false} otherwise. */ public boolean isInteractive() { @@ -901,8 +931,8 @@ /** * Tells whether the user specified to have a quite operation or not. * This method must be called after calling parseArguments. * @return <CODE>true</CODE> if the user specified to have a quite operation * and <CODE>false</CODE> otherwise. * @return {@code true} if the user specified to have a quite operation * and {@code false} otherwise. */ public boolean isQuiet() { @@ -912,8 +942,8 @@ /** * Tells whether the user specified to have a script-friendly output or not. * This method must be called after calling parseArguments. * @return <CODE>true</CODE> if the user specified to have a script-friendly * output and <CODE>false</CODE> otherwise. * @return {@code true} if the user specified to have a script-friendly * output and {@code false} otherwise. */ public boolean isScriptFriendly() { @@ -931,8 +961,7 @@ */ public String getBindPasswordAdmin() { return getBindPassword(secureArgsList.bindPasswordArg, secureArgsList.bindPasswordFileArg); return getBindPassword(secureArgsList.bindPasswordArg, secureArgsList.bindPasswordFileArg); } /** @@ -989,8 +1018,8 @@ /** * Returns whether the user asked to skip the replication port checks (if the * ports are free) or not. * @return <CODE>true</CODE> the user asked to skip the replication port * checks (if the ports are free) and <CODE>false</CODE> otherwise. * @return {@code true} the user asked to skip the replication port * checks (if the ports are free) and {@code false} otherwise. */ boolean skipReplicationPortCheck() { @@ -999,8 +1028,8 @@ /** * Returns whether the user asked to not replicate the schema between servers. * @return <CODE>true</CODE> if the user asked to not replicate schema and * <CODE>false</CODE> otherwise. * @return {@code true} if the user asked to not replicate schema and * {@code false} otherwise. */ boolean noSchemaReplication() { @@ -1010,8 +1039,8 @@ /** * Returns whether the user asked to use the second server to initialize the * schema of the first server. * @return <CODE>true</CODE> if the user asked to use the second server to * initialize the schema of the first server and <CODE>false</CODE> otherwise. * @return {@code true} if the user asked to use the second server to * initialize the schema of the first server and {@code false} otherwise. */ boolean useSecondServerAsSchemaSource() { @@ -1487,29 +1516,15 @@ } else if (isInitializeReplicationSubcommand()) { validateInitializeReplicationOptions(buf); } else if (isInitializeAllReplicationSubcommand()) { validateInitializeAllReplicationOptions(buf); } else if (isPreExternalInitializationSubcommand()) { validatePreExternalInitializationOptions(buf); } else if (isPostExternalInitializationSubcommand()) { validatePostExternalInitializationOptions(buf); validateSourceAndDestinationServersOptions(buf); } else if (isPurgeHistoricalSubcommand()) { validatePurgeHistoricalOptions(buf); } else else if (isResetChangeNumber()) { // This can occur if the user did not provide any subcommand. We assume // that the error informing of this will be generated in // validateGlobalOptions. validateSourceAndDestinationServersOptions(buf); } } @@ -1545,8 +1560,8 @@ /** * Returns whether the user provided subcommand is the enable replication * or not. * @return <CODE>true</CODE> if the user provided subcommand is the * enable replication and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * enable replication and {@code false} otherwise. */ public boolean isEnableReplicationSubcommand() { @@ -1556,8 +1571,8 @@ /** * Returns whether the user provided subcommand is the disable replication * or not. * @return <CODE>true</CODE> if the user provided subcommand is the * disable replication and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * disable replication and {@code false} otherwise. */ public boolean isDisableReplicationSubcommand() { @@ -1565,10 +1580,19 @@ } /** * Returns whether the user specified the reset changelog numbering subcommand. * @return {@code true} if the user wanted to reset change number */ public boolean isResetChangeNumber() { return isSubcommand(RESET_CHANGE_NUMBER_SUBCMD_NAME); } /** * Returns whether the user provided subcommand is the status replication * or not. * @return <CODE>true</CODE> if the user provided subcommand is the * status replication and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * status replication and {@code false} otherwise. */ public boolean isStatusReplicationSubcommand() { @@ -1578,8 +1602,8 @@ /** * Returns whether the user provided subcommand is the purge historical * or not. * @return <CODE>true</CODE> if the user provided subcommand is the * purge historical and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * purge historical and {@code false} otherwise. */ public boolean isPurgeHistoricalSubcommand() { @@ -1589,8 +1613,8 @@ /** * Returns whether the user provided subcommand is the initialize all * replication or not. * @return <CODE>true</CODE> if the user provided subcommand is the * initialize all replication and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * initialize all replication and {@code false} otherwise. */ public boolean isInitializeAllReplicationSubcommand() { @@ -1600,8 +1624,8 @@ /** * Returns whether the user provided subcommand is the pre external * initialization or not. * @return <CODE>true</CODE> if the user provided subcommand is the * pre external initialization and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * pre external initialization and {@code false} otherwise. */ public boolean isPreExternalInitializationSubcommand() { @@ -1611,8 +1635,8 @@ /** * Returns whether the user provided subcommand is the post external * initialization or not. * @return <CODE>true</CODE> if the user provided subcommand is the * post external initialization and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * post external initialization and {@code false} otherwise. */ public boolean isPostExternalInitializationSubcommand() { @@ -1622,8 +1646,8 @@ /** * Returns whether the user provided subcommand is the initialize replication * or not. * @return <CODE>true</CODE> if the user provided subcommand is the * initialize replication and <CODE>false</CODE> otherwise. * @return {@code true} if the user provided subcommand is the * initialize replication and {@code false} otherwise. */ public boolean isInitializeReplicationSubcommand() { @@ -1634,8 +1658,8 @@ * Returns whether the command-line subcommand has the name provided * or not. * @param name the name of the subcommand. * @return <CODE>true</CODE> if command-line subcommand has the name provided * and <CODE>false</CODE> otherwise. * @return {@code true} if command-line subcommand has the name provided * and {@code false} otherwise. */ private boolean isSubcommand(String name) { @@ -1721,50 +1745,6 @@ } /** * Checks the initialize all replication subcommand options and updates the * provided LocalizableMessageBuilder with the errors that were encountered with the * subcommand options. * * This method assumes that the method parseArguments for the parser has * already been called. * @param buf the LocalizableMessageBuilder object where we add the error messages * describing the errors encountered. */ private void validateInitializeAllReplicationOptions(LocalizableMessageBuilder buf) { } /** * Checks the pre external initialization subcommand options and updates the * provided LocalizableMessageBuilder with the errors that were encountered with the * subcommand options. * * This method assumes that the method parseArguments for the parser has * already been called. * @param buf the LocalizableMessageBuilder object where we add the error messages * describing the errors encountered. */ private void validatePreExternalInitializationOptions(LocalizableMessageBuilder buf) { validateInitializeAllReplicationOptions(buf); } /** * Checks the post external initialization subcommand options and updates the * provided LocalizableMessageBuilder with the errors that were encountered with the * subcommand options. * * This method assumes that the method parseArguments for the parser has * already been called. * @param buf the LocalizableMessageBuilder object where we add the error messages * describing the errors encountered. */ private void validatePostExternalInitializationOptions(LocalizableMessageBuilder buf) { validateInitializeAllReplicationOptions(buf); } /** * Checks the status replication subcommand options and updates the provided * LocalizableMessageBuilder with the errors that were encountered with the subcommand * options. @@ -1794,13 +1774,13 @@ * @param buf the LocalizableMessageBuilder object where we add the error messages * describing the errors encountered. */ private void validateInitializeReplicationOptions(LocalizableMessageBuilder buf) private void validateSourceAndDestinationServersOptions(LocalizableMessageBuilder buf) { if (hostNameSourceArg.getValue().equalsIgnoreCase(hostNameDestinationArg.getValue()) && !isInteractive() && portSourceArg.getValue().equals(portDestinationArg.getValue())) { LocalizableMessage message = ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT.get( LocalizableMessage message = ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT.get( hostNameSourceArg.getValue(), portSourceArg.getValue()); addMessage(buf, message); } @@ -1907,4 +1887,23 @@ { return getValueOrDefault(maximumDurationArg); } /** * Returns the changenumber specified as argument. * @return the changenumber specified as argument */ public int getResetChangeNumber() { return getValue(resetChangeNumber); } /** * Sets the start change number value. * @param changeNumber the new value of the option */ public void setResetChangeNumber(String changeNumber) { resetChangeNumber.setPresent(true); resetChangeNumber.addValue(changeNumber); } } opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -36,7 +36,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; @@ -49,6 +48,7 @@ import java.util.Objects; import java.util.Set; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import java.util.concurrent.atomic.AtomicReference; @@ -57,13 +57,12 @@ import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.NoPermissionException; import javax.naming.directory.Attribute; import javax.naming.directory.BasicAttribute; import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapName; import javax.net.ssl.KeyManager; import javax.net.ssl.SSLException; import javax.net.ssl.SSLHandshakeException; @@ -112,6 +111,8 @@ import org.opends.server.tools.tasks.TaskScheduleInteraction; import org.opends.server.tools.tasks.TaskScheduleUserData; import org.opends.server.types.DN; import org.opends.server.types.DirectoryException; import org.opends.server.types.HostPort; import org.opends.server.types.InitializationException; import org.opends.server.types.NullOutputStream; import org.opends.server.types.OpenDsException; @@ -147,6 +148,7 @@ import static com.forgerock.opendj.cli.Utils.*; import static com.forgerock.opendj.util.OperatingSystem.*; import static java.util.Collections.*; import static org.forgerock.util.Utils.*; import static org.opends.admin.ads.util.ConnectionUtils.*; import static org.opends.admin.ads.util.PreferredConnection.*; @@ -220,6 +222,9 @@ STATUS(STATUS_REPLICATION_SUBCMD_NAME, INFO_REPLICATION_STATUS_MENU_PROMPT.get()), /** Replication purge historical. */ PURGE_HISTORICAL(PURGE_HISTORICAL_SUBCMD_NAME, INFO_REPLICATION_PURGE_HISTORICAL_MENU_PROMPT.get()), /** Set changelog change number from another server. */ RESET_CHANGE_NUMBER(ReplicationCliArgumentParser.RESET_CHANGE_NUMBER_SUBCMD_NAME, INFO_DESCRIPTION_RESET_CHANGE_NUMBER.get()), /** Cancel operation. */ CANCEL(null, null); @@ -256,6 +261,34 @@ } } /** Abstract some of the operations when two servers must be queried for information. */ private interface OperationBetweenSourceAndDestinationServers { /** * Returns whether we should stop processing after asking the user for additional information. * Might connect to servers to run configuration checks. * @param baseDNs user specified baseDNs * @param source the source server * @param dest the destination server * @param interactive if user has to input information * @return whether we should stop */ boolean continueAfterUserInput(Collection<String> baseDNs, InitialLdapContext source, InitialLdapContext dest, boolean interactive); /** * Confirm with the user whether the current task should continue. * * @param uData servers address and authentication parameters * @param ctxSource LDAP Context for the destination server * @param ctxDestination LDAP Context for the source server * @param defaultValue default yes or no * @return whether the current task should be interrupted */ boolean confirmOperation(SourceDestinationServerUserData uData, InitialLdapContext ctxSource, InitialLdapContext ctxDestination, final boolean defaultValue); } /** The argument parser to be used. */ private ReplicationCliArgumentParser argParser; private FileBasedArgument userProvidedAdminPwdFile; @@ -527,6 +560,8 @@ return statusReplication(); case PURGE_HISTORICAL: return purgeHistorical(); case RESET_CHANGE_NUMBER: return resetChangeNumber(); default: return SUCCESSFUL_NOP; } @@ -543,15 +578,7 @@ */ private String askForAdministratorUID(String defaultValue, LocalizedLogger logger) { try { return readInput(INFO_ADMINISTRATOR_UID_PROMPT.get(), defaultValue); } catch (ClientException ce) { logger.warn(LocalizableMessage.raw("Error reading input: " + ce, ce)); return defaultValue; } return ask(logger, INFO_ADMINISTRATOR_UID_PROMPT.get(), defaultValue); } /** @@ -574,6 +601,19 @@ } } private String ask(LocalizedLogger logger, LocalizableMessage msgPrompt, String defaultValue) { try { return readInput(msgPrompt, defaultValue); } catch (ClientException ce) { logger.warn(LocalizableMessage.raw("Error reading input: " + ce, ce)); return defaultValue; } } /** * Commodity method used to repeatidly ask the user to provide an integer * value. @@ -1316,6 +1356,219 @@ } } private ReplicationCliReturnCode resetChangeNumber() { final String changeNumber; final SourceDestinationServerUserData uData = new SourceDestinationServerUserData(); if (!argParser.isInteractive()) { initializeWithArgParser(uData); return resetChangeNumber(uData); } OperationBetweenSourceAndDestinationServers resetChangeNumberOperations = new OperationBetweenSourceAndDestinationServers() { @Override public boolean continueAfterUserInput(Collection<String> baseDNs, InitialLdapContext source, InitialLdapContext dest, boolean interactive) { TopologyCacheFilter filter = new TopologyCacheFilter(); filter.setSearchMonitoringInformation(false); if (!argParser.resetChangeNumber.isPresent()) { String cn = getNewestChangeNumber(source); if (cn.isEmpty()) { return true; } argParser.setResetChangeNumber( ask(logger, INFO_RESET_CHANGE_NUMBER_TO.get(uData.getSource(), uData.getDestination()), cn)); } return false; } @Override public boolean confirmOperation(SourceDestinationServerUserData uData, InitialLdapContext ctxSource, InitialLdapContext ctxDestination, boolean defaultValue) { return !askConfirmation(INFO_RESET_CHANGE_NUMBER_CONFIRM_RESET.get(uData.getDestinationHostPort()), defaultValue); } }; return promptIfRequired(uData, resetChangeNumberOperations) ? resetChangeNumber(uData) : USER_CANCELLED; } private ReplicationCliReturnCode resetChangeNumber(SourceDestinationServerUserData uData) { InitialLdapContext ctxSource = createAdministrativeContext(uData, uData.getSource()); InitialLdapContext ctxDest = createAdministrativeContext(uData, uData.getDestination()); if (!getCommonSuffixes(ctxSource, ctxDest, SuffixRelationType.NOT_FULLY_REPLICATED).isEmpty()) { errPrintln(ERROR_RESET_CHANGE_NUMBER_SERVERS_BASEDNS_DIFFER.get(uData.getSourceHostPort(), uData.getDestinationHostPort())); return ERROR_RESET_CHANGE_NUMBER_BASEDNS_SHOULD_EQUAL; } if (mustPrintCommandBuilder()) { printNewCommandBuilder(RESET_CHANGE_NUMBER_SUBCMD_NAME, uData); } try { String newStartCN; if (argParser.resetChangeNumber.isPresent()) { newStartCN = String.valueOf(argParser.getResetChangeNumber()); } else { newStartCN = getNewestChangeNumber(ctxSource); if (newStartCN.isEmpty()) { return ERROR_UNKNOWN_CHANGE_NUMBER; } argParser.setResetChangeNumber(newStartCN); } SearchControls ctls = new SearchControls(); ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); ctls.setReturningAttributes( new String[] { "changeNumber", "replicationCSN", "targetDN" }); NamingEnumeration<SearchResult> listeners = ctxSource.search(new LdapName("cn=changelog"), "(changeNumber=" + newStartCN + ")", ctls); if (!listeners.hasMore()) { errPrintln(ERROR_RESET_CHANGE_NUMBER_UNKNOWN_NUMBER.get(newStartCN, uData.getSourceHostPort())); return ERROR_UNKNOWN_CHANGE_NUMBER; } SearchResult sr = listeners.next(); String newStartCSN = getFirstValue(sr, "replicationCSN"); if (newStartCSN == null) { errPrintln(ERROR_RESET_CHANGE_NUMBER_NO_CSN_FOUND.get(newStartCN, uData.getSourceHostPort())); return ERROR_RESET_CHANGE_NUMBER_NO_CSN; } String targetDN = getFirstValue(sr, "targetDN"); DN targetBaseDN = DN.rootDN(); try { for (String adn : getCommonSuffixes(ctxSource, ctxDest, SuffixRelationType.REPLICATED)) { DN dn = DN.valueOf(adn); if (DN.valueOf(targetDN).isDescendantOf(dn) && dn.isDescendantOf(targetBaseDN)) { targetBaseDN = dn; } } } catch (DirectoryException de) { errPrintln(ERROR_RESET_CHANGE_NUMBER_EXCEPTION.get(de.getLocalizedMessage())); return ERROR_RESET_CHANGE_NUMBER_PROBLEM; } if (targetBaseDN.isRootDN()) { errPrintln(ERROR_RESET_CHANGE_NUMBER_NO_BASEDN.get(newStartCN, targetDN, newStartCSN)); return ERROR_RESET_CHANGE_NUMBER_UNKNOWN_BASEDN; } logger.info(INFO_RESET_CHANGE_NUMBER_INFO.get(uData.getDestinationHostPort(), newStartCN, newStartCSN, targetBaseDN.toString())); Map<String, String> taskAttrs = new TreeMap<>(); taskAttrs.put("ds-task-reset-change-number-to", newStartCN); taskAttrs.put("ds-task-reset-change-number-csn", newStartCSN); taskAttrs.put("ds-task-reset-change-number-base-dn", targetBaseDN.toString()); String taskDN = createServerTask(ctxDest, "ds-task-reset-change-number", "org.opends.server.tasks.ResetChangeNumberTask", "dsreplication-reset-cn", taskAttrs); waitUntilResetChangeNumberTaskEnds(ctxDest, taskDN); return SUCCESSFUL; } catch (ReplicationCliException | NamingException | NullPointerException e) { errPrintln(ERROR_RESET_CHANGE_NUMBER_EXCEPTION.get(e.getLocalizedMessage())); return ERROR_RESET_CHANGE_NUMBER_PROBLEM; } } private String getNewestChangeNumber(InitialLdapContext source) { try { SearchControls ctls = new SearchControls(); ctls.setSearchScope(SearchControls.OBJECT_SCOPE); ctls.setReturningAttributes(new String[] {"lastChangeNumber"}); NamingEnumeration<SearchResult> results = source.search(new LdapName(""), "objectclass=*", ctls); if (results.hasMore()) { return getFirstValue(results.next(), "lastChangeNumber"); } } catch (NamingException e) { errPrintln(ERROR_RESET_CHANGE_NUMBER_EXCEPTION.get(e.getLocalizedMessage())); } return ""; } private void waitUntilResetChangeNumberTaskEnds(InitialLdapContext server, String taskDN) throws ReplicationCliException { String lastLogMsg = null; while (true) { sleepCatchInterrupt(500); try { SearchResult sr = getLastSearchResult(server, taskDN, "ds-task-log-message", "ds-task-state" ); String logMsg = getFirstValue(sr, "ds-task-log-message"); if (logMsg != null && !logMsg.equals(lastLogMsg)) { logger.info(LocalizableMessage.raw(logMsg)); lastLogMsg = logMsg; } InstallerHelper helper = new InstallerHelper(); String state = getFirstValue(sr, "ds-task-state"); if (helper.isDone(state) || helper.isStoppedByError(state)) { LocalizableMessage errorMsg = ERR_UNEXPECTED_DURING_TASK_WITH_LOG.get(lastLogMsg, state, server); if (helper.isCompletedWithErrors(state)) { logger.warn(LocalizableMessage.raw("Completed with error: " + errorMsg)); errPrintln(errorMsg); } else if (!helper.isSuccessful(state) || helper.isStoppedByError(state)) { logger.warn(LocalizableMessage.raw("Error: " + errorMsg)); throw new ReplicationCliException(errorMsg, ERROR_LAUNCHING_RESET_CHANGE_NUMBER, null); } else { print(INFO_RESET_CHANGE_NUMBER_TASK_FINISHED.get()); println(); } return; } } catch (NameNotFoundException x) { return; } catch (NamingException ne) { throw new ReplicationCliException(getThrowableMsg(ERR_READING_SERVER_TASK_PROGRESS.get(), ne), ERROR_CONNECTING, ne); } } } private InitialLdapContext createAdministrativeContext(MonoServerReplicationUserData uData) { final String bindDn = getAdministratorDN(uData.getAdminUid()); @@ -1411,40 +1664,22 @@ getThrowableMsg(msg, ne), code, ne); } } // Wait until it is over SearchControls searchControls = new SearchControls(); searchControls.setCountLimit(1); searchControls.setSearchScope(SearchControls.OBJECT_SCOPE); searchControls.setReturningAttributes( new String[] { "ds-task-log-message", "ds-task-state", "ds-task-purge-conflicts-historical-purged-values-count", "ds-task-purge-conflicts-historical-purge-completed-in-time", "ds-task-purge-conflicts-historical-purge-completed-in-time", "ds-task-purge-conflicts-historical-last-purged-changenumber" }); String filter = "objectclass=*"; String lastLogMsg = null; // Polling only makes sense when we are recurrently scheduling a task // or the task is being executed now. String lastLogMsg = null; while (!isOver && uData.getTaskSchedule().getStartDate() == null) { sleepCatchInterrupt(500); try { NamingEnumeration<SearchResult> res = ctx.search(dn, filter, searchControls); SearchResult sr = null; try { sr = res.next(); } finally { res.close(); } SearchResult sr = getFirstSearchResult(ctx, dn, "ds-task-log-message", "ds-task-state", "ds-task-purge-conflicts-historical-purged-values-count", "ds-task-purge-conflicts-historical-purge-completed-in-time", "ds-task-purge-conflicts-historical-purge-completed-in-time", "ds-task-purge-conflicts-historical-last-purged-changenumber"); String logMsg = getFirstValue(sr, "ds-task-log-message"); if (logMsg != null && !logMsg.equals(lastLogMsg)) { @@ -1479,7 +1714,7 @@ } catch (NamingException ne) { LocalizableMessage msg = ERR_POOLING_PURGE_HISTORICAL.get(); LocalizableMessage msg = ERR_READING_SERVER_TASK_PROGRESS.get(); throw new ReplicationCliException( getThrowableMsg(msg, ne), ERROR_CONNECTING, ne); } @@ -1492,14 +1727,34 @@ return returnCode; } private SearchResult getFirstSearchResult(InitialLdapContext ctx, String dn, String... returnedAttributes) throws NamingException { SearchControls searchControls = new SearchControls(); searchControls.setCountLimit(1); searchControls.setSearchScope(SearchControls.OBJECT_SCOPE); searchControls.setReturningAttributes(returnedAttributes); NamingEnumeration<SearchResult> res = ctx.search(dn, "objectclass=*", searchControls); try { SearchResult sr = null; sr = res.next(); return sr; } finally { res.close(); } } private LocalizableMessage getPurgeErrorMsg(String lastLogMsg, String state, InitialLdapContext ctx) { String server = getHostPort(ctx); if (lastLogMsg != null) { return INFO_ERROR_DURING_PURGE_HISTORICAL_LOG.get(lastLogMsg, state, server); return ERR_UNEXPECTED_DURING_TASK_WITH_LOG.get(lastLogMsg, state, server); } return INFO_ERROR_DURING_PURGE_HISTORICAL_NO_LOG.get(state, server); return ERR_UNEXPECTED_DURING_TASK_NO_LOG.get(state, server); } /** @@ -1556,7 +1811,7 @@ } replica.setBackendName(backend.getBackendID()); replica.setSuffix(suffix); suffix.setReplicas(Collections.singleton(replica)); suffix.setReplicas(singleton(replica)); replicas.add(replica); } @@ -1685,23 +1940,32 @@ */ private ReplicationCliReturnCode initializeReplication() { InitializeReplicationUserData uData = new InitializeReplicationUserData(); if (argParser.isInteractive()) { if (promptIfRequired(uData)) { return initializeReplication(uData); } else { return USER_CANCELLED; } } else SourceDestinationServerUserData uData = new SourceDestinationServerUserData(); if (!argParser.isInteractive()) { initializeWithArgParser(uData); return initializeReplication(uData); } OperationBetweenSourceAndDestinationServers initializeReplicationOperations = new OperationBetweenSourceAndDestinationServers() { @Override public boolean continueAfterUserInput(Collection<String> baseDNs, InitialLdapContext source, InitialLdapContext dest, boolean interactive) { checkSuffixesForInitializeReplication(baseDNs, source, dest, interactive); return baseDNs.isEmpty(); } @Override public boolean confirmOperation(SourceDestinationServerUserData uData, InitialLdapContext ctxSource, InitialLdapContext ctxDestination, boolean defaultValue) { return !askConfirmation(getInitializeReplicationPrompt(uData, ctxSource, ctxDestination), defaultValue); } }; return promptIfRequired(uData, initializeReplicationOperations) ? initializeReplication(uData) : USER_CANCELLED; } /** @@ -2782,7 +3046,7 @@ { if (uData instanceof InitializeAllReplicationUserData) { sourceServerCI.setHeadingMessage(INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS.get()); sourceServerCI.setHeadingMessage(INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS.get()); } sourceServerCI.run(); @@ -2871,10 +3135,12 @@ * is missing, ask the user to provide valid data. * We assume that if this method is called we are in interactive mode. * @param uData the object to be updated. * @param serversOperations Additional processing for the command * @return <CODE>true</CODE> if the object was successfully updated and * <CODE>false</CODE> if the user cancelled the operation. */ private boolean promptIfRequired(InitializeReplicationUserData uData) private boolean promptIfRequired(SourceDestinationServerUserData uData, OperationBetweenSourceAndDestinationServers serversOperations) { boolean cancelled = false; @@ -2903,7 +3169,7 @@ { try { sourceServerCI.setHeadingMessage(INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS.get()); sourceServerCI.setHeadingMessage(INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS.get()); sourceServerCI.run(); hostSource = sourceServerCI.getHostName(); portSource = sourceServerCI.getPortNumber(); @@ -2966,7 +3232,7 @@ { try { destinationServerCI.setHeadingMessage(INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS.get()); destinationServerCI.setHeadingMessage(INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS.get()); destinationServerCI.run(); hostDestination = destinationServerCI.getHostName(); portDestination = destinationServerCI.getPortNumber(); @@ -2977,7 +3243,7 @@ { portDestination = -1; errPrintln(); errPrintln(ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT.get(hostSource, portSource)); errPrintln(ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT.get(hostSource, portSource)); errPrintln(); error = true; } @@ -3016,17 +3282,14 @@ if (!cancelled) { LinkedList<String> suffixes = argParser.getBaseDNs(); checkSuffixesForInitializeReplication(suffixes, ctxSource, ctxDestination, true); cancelled = suffixes.isEmpty(); cancelled = serversOperations.continueAfterUserInput(suffixes, ctxSource, ctxDestination, true); uData.setBaseDNs(suffixes); } if (!cancelled) { // Ask for confirmation to initialize. println(); cancelled = !askConfirmation(getPrompt(uData, ctxSource, ctxDestination), true); cancelled = serversOperations.confirmOperation(uData, ctxSource, ctxDestination, true); println(); } @@ -3034,8 +3297,8 @@ return !cancelled; } private LocalizableMessage getPrompt(InitializeReplicationUserData uData, InitialLdapContext ctxSource, InitialLdapContext ctxDestination) private LocalizableMessage getInitializeReplicationPrompt(SourceDestinationServerUserData uData, InitialLdapContext ctxSource, InitialLdapContext ctxDestination) { String hostPortSource = getHostPort(ctxSource); String hostPortDestination = getHostPort(ctxDestination); @@ -3138,7 +3401,7 @@ * user. * @param uData the initialize replication user data object to be initialized. */ private void initializeWithArgParser(InitializeReplicationUserData uData) private void initializeWithArgParser(SourceDestinationServerUserData uData) { initialize(uData); @@ -3250,8 +3513,7 @@ } catch (Throwable t) { logger.warn(LocalizableMessage.raw( "Unexpected error retrieving the replication port: "+t, t)); logger.warn(LocalizableMessage.raw("Unexpected error retrieving the replication port: " + t, t)); } return replicationPort; } @@ -3547,8 +3809,7 @@ * @return a Collection containing a list of suffixes that are replicated * (or those that can be replicated) in two servers. */ private Collection<String> getCommonSuffixes( InitialLdapContext ctx1, InitialLdapContext ctx2, SuffixRelationType type) private List<String> getCommonSuffixes(InitialLdapContext ctx1, InitialLdapContext ctx2, SuffixRelationType type) { LinkedList<String> suffixes = new LinkedList<>(); try @@ -4005,11 +4266,10 @@ * @return ReplicationCliReturnCode.SUCCESSFUL if the operation was * successful and an error code otherwise. */ private ReplicationCliReturnCode initializeReplication( InitializeReplicationUserData uData) private ReplicationCliReturnCode initializeReplication(SourceDestinationServerUserData uData) { InitialLdapContext ctxSource = createAdministrativeContext(uData, true); InitialLdapContext ctxDestination = createAdministrativeContext(uData, false); InitialLdapContext ctxSource = createAdministrativeContext(uData, uData.getSource()); InitialLdapContext ctxDestination = createAdministrativeContext(uData, uData.getDestination()); try { if (ctxSource == null || ctxDestination == null) @@ -4056,22 +4316,19 @@ } } private InitialLdapContext createAdministrativeContext(InitializeReplicationUserData uData, boolean isSource) private InitialLdapContext createAdministrativeContext(SourceDestinationServerUserData uData, HostPort server) { final String host = isSource ? uData.getHostNameSource() : uData.getHostNameDestination(); final int port = isSource ? uData.getPortSource() : uData.getPortDestination(); try { return createAdministrativeContext( host, port, useSSL, useStartTLS, server.getHost(), server.getPort(), useSSL, useStartTLS, getAdministratorDN(uData.getAdminUid()), uData.getAdminPwd(), getConnectTimeout(), getTrustManager(sourceServerCI)); } catch (NamingException ne) { final String hostPort = getServerRepresentation(host, port); errPrintln(); errPrintln(getMessageForException(ne, hostPort)); errPrintln(getMessageForException(ne, server.toString())); logger.error(LocalizableMessage.raw("Complete error stack:"), ne); return null; } @@ -6890,8 +7147,7 @@ public void progressUpdate(ProgressUpdateEvent ev) { LocalizableMessage newLogDetails = ev.getNewLogs(); if (newLogDetails != null && !"".equals(newLogDetails.toString().trim())) if (newLogDetails != null && !"".equals(newLogDetails.toString().trim())) { print(newLogDetails); println(); @@ -6904,8 +7160,7 @@ { try { installer.initializeSuffix(ctxDestination, replicationId, baseDN, displayProgress, getHostPort(ctxSource)); installer.initializeSuffix(ctxDestination, replicationId, baseDN, displayProgress, getHostPort(ctxSource)); initDone = true; } catch (PeerNotFoundException pnfe) @@ -7019,81 +7274,37 @@ private void postPreExternalInitialization(String baseDN, InitialLdapContext ctx, boolean isPre) throws ReplicationCliException { boolean taskCreated = false; int i = 1; boolean isOver = false; String dn = null; BasicAttributes attrs = new BasicAttributes(); Attribute oc = new BasicAttribute("objectclass"); oc.add("top"); oc.add("ds-task"); oc.add("ds-task-reset-generation-id"); attrs.put(oc); attrs.put("ds-task-class-name", "org.opends.server.tasks.SetGenerationIdTask"); Map<String, String> attrMap = new TreeMap<>(); if (isPre) { attrs.put("ds-task-reset-generation-id-new-value", "-1"); attrMap.put("ds-task-reset-generation-id-new-value", "-1"); } attrs.put("ds-task-reset-generation-id-domain-base-dn", baseDN); while (!taskCreated) attrMap.put("ds-task-reset-generation-id-domain-base-dn", baseDN); try { dn = createServerTask(ctx, "ds-task-reset-generation-id", "org.opends.server.tasks.SetGenerationIdTask", "dsreplication-reset-generation-id", attrMap); } catch (NamingException ne) { String id = "dsreplication-reset-generation-id-"+i; dn = "ds-task-id="+id+",cn=Scheduled Tasks,cn=Tasks"; attrs.put("ds-task-id", id); try { DirContext dirCtx = ctx.createSubcontext(dn, attrs); taskCreated = true; logger.info(LocalizableMessage.raw("created task entry: "+attrs)); dirCtx.close(); } catch (NameAlreadyBoundException x) { } catch (NamingException ne) { logger.error(LocalizableMessage.raw("Error creating task "+attrs, ne)); LocalizableMessage msg = isPre ? ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION.get(): LocalizableMessage msg = isPre ? ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION.get(): ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION.get(); ReplicationCliReturnCode code = isPre? ERROR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION: ERROR_LAUNCHING_POST_EXTERNAL_INITIALIZATION; throw new ReplicationCliException( getThrowableMsg(msg, ne), code, ne); } i++; ReplicationCliReturnCode code = isPre? ERROR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION: ERROR_LAUNCHING_POST_EXTERNAL_INITIALIZATION; throw new ReplicationCliException(getThrowableMsg(msg, ne), code, ne); } // Wait until it is over SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.OBJECT_SCOPE); searchControls.setReturningAttributes( new String[] { "ds-task-log-message", "ds-task-state" }); String filter = "objectclass=*"; String lastLogMsg = null; while (!isOver) { sleepCatchInterrupt(500); try { NamingEnumeration<SearchResult> res = ctx.search(dn, filter, searchControls); SearchResult sr = null; try { while (res.hasMore()) { sr = res.next(); } } finally { res.close(); } SearchResult sr = getLastSearchResult(ctx, dn, "ds-task-log-message", "ds-task-state"); String logMsg = getFirstValue(sr, "ds-task-log-message"); if (logMsg != null && !logMsg.equals(lastLogMsg)) { @@ -7106,7 +7317,7 @@ if (helper.isDone(state) || helper.isStoppedByError(state)) { isOver = true; LocalizableMessage errorMsg = getPrePostErrorMsg(isPre, lastLogMsg, state, ctx); LocalizableMessage errorMsg = getPrePostErrorMsg(lastLogMsg, state, ctx); if (helper.isCompletedWithErrors(state)) { @@ -7130,27 +7341,20 @@ } catch (NamingException ne) { LocalizableMessage msg = isPre ? ERR_POOLING_PRE_EXTERNAL_INITIALIZATION.get(): ERR_POOLING_POST_EXTERNAL_INITIALIZATION.get(); throw new ReplicationCliException( getThrowableMsg(msg, ne), ERROR_CONNECTING, ne); throw new ReplicationCliException(getThrowableMsg(ERR_READING_SERVER_TASK_PROGRESS.get(), ne), ERROR_CONNECTING, ne); } } } private LocalizableMessage getPrePostErrorMsg(boolean isPre, String lastLogMsg, String state, InitialLdapContext ctx) private LocalizableMessage getPrePostErrorMsg(String lastLogMsg, String state, InitialLdapContext ctx) { String server = getHostPort(ctx); if (lastLogMsg != null) { return isPre ? INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG.get(lastLogMsg, state, server) : INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG.get(lastLogMsg, state, server); return ERR_UNEXPECTED_DURING_TASK_WITH_LOG.get(lastLogMsg, state, server); } return isPre ? INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG.get(state, server) : INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG.get(state, server); return ERR_UNEXPECTED_DURING_TASK_NO_LOG.get(state, server); } private void sleepCatchInterrupt(long millis) @@ -7179,58 +7383,23 @@ boolean displayProgress) throws ClientException, PeerNotFoundException { boolean taskCreated = false; int i = 1; boolean isOver = false; String dn = null; String serverDisplay = getHostPort(ctx); BasicAttributes attrs = new BasicAttributes(); Attribute oc = new BasicAttribute("objectclass"); oc.add("top"); oc.add("ds-task"); oc.add("ds-task-initialize-remote-replica"); attrs.put(oc); attrs.put("ds-task-class-name", "org.opends.server.tasks.InitializeTargetTask"); attrs.put("ds-task-initialize-domain-dn", baseDN); attrs.put("ds-task-initialize-replica-server-id", "all"); while (!taskCreated) Map<String, String> attrsMap = new TreeMap<>(); attrsMap.put("ds-task-initialize-domain-dn", baseDN); attrsMap.put("ds-task-initialize-replica-server-id", "all"); try { String id = "dsreplication-initialize"+i; dn = "ds-task-id="+id+",cn=Scheduled Tasks,cn=Tasks"; attrs.put("ds-task-id", id); try { DirContext dirCtx = ctx.createSubcontext(dn, attrs); taskCreated = true; logger.info(LocalizableMessage.raw("created task entry: "+attrs)); dirCtx.close(); } catch (NameAlreadyBoundException x) { logger.warn(LocalizableMessage.raw("A task with dn: "+dn+" already existed.")); } catch (NamingException ne) { logger.error(LocalizableMessage.raw("Error creating task "+attrs, ne)); throw new ClientException( ReturnCode.APPLICATION_ERROR, getThrowableMsg(INFO_ERROR_LAUNCHING_INITIALIZATION.get( serverDisplay), ne), ne); } i++; dn = createServerTask(ctx, "ds-task-initialize-remote-replica", "org.opends.server.tasks.InitializeTargetTask", "dsreplication-initialize", attrsMap); } // Wait until it is over SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.OBJECT_SCOPE); searchControls.setReturningAttributes( new String[] { "ds-task-unprocessed-entry-count", "ds-task-processed-entry-count", "ds-task-log-message", "ds-task-state" }); String filter = "objectclass=*"; catch (NamingException ne) { throw new ClientException(ReturnCode.APPLICATION_ERROR, getThrowableMsg(INFO_ERROR_LAUNCHING_INITIALIZATION.get(serverDisplay), ne), ne); } LocalizableMessage lastDisplayedMsg = null; String lastLogMsg = null; long lastTimeMsgDisplayed = -1; @@ -7241,23 +7410,10 @@ sleepCatchInterrupt(500); try { NamingEnumeration<SearchResult> res = ctx.search(dn, filter, searchControls); SearchResult sr = null; try { while (res.hasMore()) { sr = res.next(); } } finally { res.close(); } SearchResult sr = getLastSearchResult(ctx, dn, "ds-task-unprocessed-entry-count", "ds-task-processed-entry-count", "ds-task-log-message", "ds-task-state" ); // Get the number of entries that have been handled and // a percentage... // Get the number of entries that have been handled and a percentage... String sProcessed = getFirstValue(sr, "ds-task-processed-entry-count"); String sUnprocessed = getFirstValue(sr, "ds-task-unprocessed-entry-count"); long processed = -1; @@ -7376,6 +7532,65 @@ } } private SearchResult getLastSearchResult(InitialLdapContext ctx, String dn, String... returnedAttributes) throws NamingException { SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.OBJECT_SCOPE); searchControls.setReturningAttributes(returnedAttributes); NamingEnumeration<SearchResult> res = ctx.search(dn, "objectclass=*", searchControls); try { SearchResult sr = null; while (res.hasMore()) { sr = res.next(); } return sr; } finally { res.close(); } } private String createServerTask(InitialLdapContext ctx, String taskObjectclass, String taskJavaClass, String taskID, Map<String, String> taskAttrs) throws NamingException { int i = 1; String dn = ""; BasicAttributes attrs = new BasicAttributes(); attrs.put("objectclass", taskObjectclass); attrs.put("ds-task-class-name", taskJavaClass); for (Map.Entry<String, String> attr : taskAttrs.entrySet()) { attrs.put(attr.getKey(), attr.getValue()); } while (true) { String id = taskID + "-" + i; dn = "ds-task-id=" + id + ",cn=Scheduled Tasks,cn=Tasks"; try { DirContext dirCtx = ctx.createSubcontext(dn, attrs); logger.info(LocalizableMessage.raw("created task entry: " + attrs)); dirCtx.close(); return dn; } catch (NameAlreadyBoundException x) { logger.warn(LocalizableMessage.raw("A task with dn: " + dn + " already existed.")); } catch (NamingException ne) { logger.error(LocalizableMessage.raw("Error creating task " + attrs, ne)); throw ne; } i++; } } private LocalizableMessage getInitializeAllErrorMsg(String serverDisplay, String lastLogMsg, String state) { if (lastLogMsg != null) @@ -7497,8 +7712,7 @@ if (areDnsEqual(domain.getBaseDN().toString(), baseDN)) { print(formatter.getFormattedWithPoints( INFO_REPLICATION_REMOVING_REFERENCES_ON_REMOTE.get(baseDN, hostPort))); INFO_REPLICATION_REMOVING_REFERENCES_ON_REMOTE.get(baseDN, hostPort))); Set<String> replServers = domain.getReplicationServer(); if (replServers != null) { @@ -8199,19 +8413,18 @@ { String commandName = getCommandName(); CommandBuilder commandBuilder = new CommandBuilder(commandName, subcommandName); CommandBuilder commandBuilder = new CommandBuilder(commandName, subcommandName); if (ENABLE_REPLICATION_SUBCMD_NAME.equals(subcommandName)) { // All the arguments for enable replication are update here. updateCommandBuilder(commandBuilder, (EnableReplicationUserData)uData); } else if (INITIALIZE_REPLICATION_SUBCMD_NAME.equals(subcommandName)) else if (INITIALIZE_REPLICATION_SUBCMD_NAME.equals(subcommandName) || RESET_CHANGE_NUMBER_SUBCMD_NAME.equals(subcommandName)) { // All the arguments for initialize replication are update here. updateCommandBuilder(commandBuilder, (InitializeReplicationUserData)uData); updateCommandBuilder(commandBuilder, (SourceDestinationServerUserData)uData); } else if (PURGE_HISTORICAL_SUBCMD_NAME.equals(subcommandName)) { @@ -8315,8 +8528,7 @@ commandBuilder, taskSchedule); } private void addGlobalArguments(CommandBuilder commandBuilder, ReplicationUserData uData) private void addGlobalArguments(CommandBuilder commandBuilder, ReplicationUserData uData) throws ArgumentException { List<String> baseDNs = uData.getBaseDNs(); @@ -8331,6 +8543,11 @@ } commandBuilder.addArgument(baseDNsArg); if (argParser.resetChangeNumber.isPresent()) { commandBuilder.addArgument(argParser.resetChangeNumber); } // Try to find some arguments and put them at the end. String[] identifiersToMove ={ OPTION_LONG_ADMIN_UID, @@ -8548,8 +8765,8 @@ { if (OPTION_LONG_HOST.equals(arg.getLongIdentifier())) { commandBuilder.addArgument(getHostArg("host2", 'O', server2.getHostName(), INFO_DESCRIPTION_ENABLE_REPLICATION_HOST2)); commandBuilder.addArgument( getHostArg("host2", 'O', server2.getHostName(), INFO_DESCRIPTION_ENABLE_REPLICATION_HOST2)); } else if (OPTION_LONG_PORT.equals(arg.getLongIdentifier())) { @@ -8714,7 +8931,7 @@ "usesecondserverasschemasource", null, "useSecondServerAsSchemaSource", INFO_DESCRIPTION_ENABLE_REPLICATION_USE_SECOND_AS_SCHEMA_SOURCE.get( "--"+argParser.noSchemaReplicationArg.getLongIdentifier()))); "--" + argParser.noSchemaReplicationArg.getLongIdentifier()))); } } @@ -8794,7 +9011,7 @@ } private void updateCommandBuilder(CommandBuilder commandBuilder, InitializeReplicationUserData uData) SourceDestinationServerUserData uData) throws ArgumentException { // Update the arguments used in the console interaction with the @@ -9182,8 +9399,8 @@ String hostPortDestination = getHostPort(ctxDestination); if (isInteractive()) { LocalizableMessage msg = INFO_REPLICATION_MERGING_REGISTRIES_CONFIRMATION.get( hostPortSource, hostPortDestination, hostPortSource, hostPortDestination); LocalizableMessage msg = INFO_REPLICATION_MERGING_REGISTRIES_CONFIRMATION.get(hostPortSource, hostPortDestination, hostPortSource, hostPortDestination); if (!askConfirmation(msg, true)) { throw new ReplicationCliException(ERR_REPLICATION_USER_CANCELLED.get(), USER_CANCELLED, null); @@ -9191,8 +9408,8 @@ } else { LocalizableMessage msg = INFO_REPLICATION_MERGING_REGISTRIES_DESCRIPTION.get( hostPortSource, hostPortDestination, hostPortSource, hostPortDestination); LocalizableMessage msg = INFO_REPLICATION_MERGING_REGISTRIES_DESCRIPTION.get(hostPortSource, hostPortDestination, hostPortSource, hostPortDestination); println(msg); println(); } @@ -9234,8 +9451,7 @@ if (!commonRepServerIDErrors.isEmpty()) { mb.append(ERR_REPLICATION_ENABLE_COMMON_REPLICATION_SERVER_ID.get( getMessageFromCollection(commonRepServerIDErrors, Constants.LINE_SEPARATOR))); getMessageFromCollection(commonRepServerIDErrors, Constants.LINE_SEPARATOR))); } if (!commonDomainIDErrors.isEmpty()) { @@ -9244,8 +9460,7 @@ mb.append(Constants.LINE_SEPARATOR); } mb.append(ERR_REPLICATION_ENABLE_COMMON_DOMAIN_ID.get( getMessageFromCollection(commonDomainIDErrors, Constants.LINE_SEPARATOR))); getMessageFromCollection(commonDomainIDErrors, Constants.LINE_SEPARATOR))); } throw new ReplicationCliException(mb.toMessage(), REPLICATION_ADS_MERGE_NOT_SUPPORTED, null); @@ -9317,8 +9532,8 @@ catch (Throwable t) { logger.error(LocalizableMessage.raw("Error seeding truststore: "+t, t)); LocalizableMessage msg = ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get( getHostPort(adsCtx2.getDirContext()), getHostPort(adsCtx1.getDirContext()), toString(t)); LocalizableMessage msg = ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get(getHostPort(adsCtx2.getDirContext()), getHostPort(adsCtx1.getDirContext()), toString(t)); throw new ReplicationCliException(msg, ERROR_SEEDING_TRUSTORE, t); } pointAdder.stop(); @@ -9375,8 +9590,8 @@ if (server2.isReplicationServer() && server2.getReplicationServerId() == replicationID1 && !server2.getReplicationServerHostPort().equalsIgnoreCase(replServerHostPort1)) { commonRepServerIDErrors.add(ERR_REPLICATION_ENABLE_COMMON_REPLICATION_SERVER_ID_ARG.get(serverToFind .getHostPort(true), server2.getHostPort(true), replicationID1)); commonRepServerIDErrors.add(ERR_REPLICATION_ENABLE_COMMON_REPLICATION_SERVER_ID_ARG.get( serverToFind.getHostPort(true), server2.getHostPort(true), replicationID1)); return true; } } @@ -9399,12 +9614,8 @@ && domain1Id == replica2.getReplicationId()) { commonDomainIDErrors.add( ERR_REPLICATION_ENABLE_COMMON_DOMAIN_ID_ARG.get( replica1.getServer().getHostPort(true), suffix1DN, replica2.getServer().getHostPort(true), suffix2.getDN(), domain1Id)); ERR_REPLICATION_ENABLE_COMMON_DOMAIN_ID_ARG.get(replica1.getServer().getHostPort(true), suffix1DN, replica2.getServer().getHostPort(true), suffix2.getDN(), domain1Id)); return true; } } @@ -9507,11 +9718,8 @@ private boolean displayLogFileAtEnd(String subCommand) { final List<String> subCommands = Arrays.asList( ENABLE_REPLICATION_SUBCMD_NAME, DISABLE_REPLICATION_SUBCMD_NAME, INITIALIZE_ALL_REPLICATION_SUBCMD_NAME, INITIALIZE_REPLICATION_SUBCMD_NAME); final List<String> subCommands = Arrays.asList(ENABLE_REPLICATION_SUBCMD_NAME, DISABLE_REPLICATION_SUBCMD_NAME, INITIALIZE_ALL_REPLICATION_SUBCMD_NAME, INITIALIZE_REPLICATION_SUBCMD_NAME, RESET_CHANGE_NUMBER_SUBCMD_NAME); return subCommands.contains(subCommand); } opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliReturnCode.java
@@ -40,133 +40,90 @@ { /** Successful. */ SUCCESSFUL(0, INFO_REPLICATION_SUCCESSFUL.get()), /** Successful but no operation was performed. */ SUCCESSFUL_NOP(SUCCESSFUL.getReturnCode(), INFO_REPLICATION_SUCCESSFUL_NOP.get()), SUCCESSFUL_NOP(SUCCESSFUL.getReturnCode(), INFO_REPLICATION_SUCCESSFUL_NOP.get()), /** Unable to initialize arguments. */ CANNOT_INITIALIZE_ARGS(1, ERR_REPLICATION_NO_MESSAGE.get()), /** * Cannot parse arguments because the user provided arguments are not valid * or there was an error checking the user data. */ ERROR_USER_DATA(2, ERR_REPLICATION_NO_MESSAGE.get()), /** The user canceled the operation in interactive mode. */ USER_CANCELLED(3, ERR_REPLICATION_USER_CANCELLED.get()), /** Conflicting arguments. */ CONFLICTING_ARGS(4, ERR_REPLICATION_NO_MESSAGE.get()), /** The provided base DNs cannot be used to enable replication. */ REPLICATION_CANNOT_BE_ENABLED_ON_BASEDN(5, ERR_REPLICATION_NO_MESSAGE.get()), /** The provided base DNs cannot be used to disable replication. */ REPLICATION_CANNOT_BE_DISABLED_ON_BASEDN(6, ERR_REPLICATION_NO_MESSAGE.get()), /** * The provided base DNs cannot be used to initialize the contents of the * replicas. */ REPLICATION_CANNOT_BE_INITIALIZED_ON_BASEDN(7, ERR_REPLICATION_NO_MESSAGE.get()), /** * Error connecting with the provided credentials. */ /** The provided base DNs cannot be used to initialize the contents of the replicas. */ REPLICATION_CANNOT_BE_INITIALIZED_ON_BASEDN(7, ERR_REPLICATION_NO_MESSAGE.get()), /** Error connecting with the provided credentials. */ ERROR_CONNECTING(8, ERR_REPLICATION_NO_MESSAGE.get()), /** * Could not find the replication ID of the domain to be used to initialize * the replica. */ /** Could not find the replication ID of the domain to be used to initialize the replica. */ REPLICATIONID_NOT_FOUND(9, ERR_REPLICATION_NO_MESSAGE.get()), /** * The number of tries we perform to start the initialization are over. * We systematically receive a peer not found error. */ INITIALIZING_TRIES_COMPLETED(10, ERR_REPLICATION_NO_MESSAGE.get()), /** Error enabling replication on a base DN. */ ERROR_ENABLING_REPLICATION_ON_BASEDN(11, ERR_REPLICATION_NO_MESSAGE.get()), /** Error initializing base DN. */ ERROR_INITIALIZING_BASEDN_GENERIC(12, ERR_REPLICATION_NO_MESSAGE.get()), /** Error reading configuration. */ ERROR_READING_CONFIGURATION(13, ERR_REPLICATION_NO_MESSAGE.get()), /** Error updating ADS. */ ERROR_UPDATING_ADS(14, ERR_REPLICATION_NO_MESSAGE.get()), /** Error reading ADS. */ ERROR_READING_ADS(15, ERR_REPLICATION_NO_MESSAGE.get()), /** Error reading TopologyCache. */ ERROR_READING_TOPOLOGY_CACHE(16, ERR_REPLICATION_NO_MESSAGE.get()), /** Error configuring replication server. */ ERROR_CONFIGURING_REPLICATIONSERVER(17, ERR_REPLICATION_NO_MESSAGE.get()), /** Unsupported ADS scenario. */ REPLICATION_ADS_MERGE_NOT_SUPPORTED(18, ERR_REPLICATION_NO_MESSAGE.get()), /** Error disabling replication on base DN. */ ERROR_DISABLING_REPLICATION_ON_BASEDN(19, ERR_REPLICATION_NO_MESSAGE.get()), /** Error removing replication port reference on base DN. */ ERROR_DISABLING_REPLICATION_REMOVE_REFERENCE_ON_BASEDN(20, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_DISABLING_REPLICATION_REMOVE_REFERENCE_ON_BASEDN(20, ERR_REPLICATION_NO_MESSAGE.get()), /** Error initializing Administration Framework. */ ERROR_INITIALIZING_ADMINISTRATION_FRAMEWORK(21, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_INITIALIZING_ADMINISTRATION_FRAMEWORK(21, ERR_REPLICATION_NO_MESSAGE.get()), /** Error seeding trustore. */ ERROR_SEEDING_TRUSTORE(22, ERR_REPLICATION_NO_MESSAGE.get()), /** Error launching pre external initialization. */ ERROR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION(23, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION(23, ERR_REPLICATION_NO_MESSAGE.get()), /** Error launching pre external initialization. */ ERROR_LAUNCHING_POST_EXTERNAL_INITIALIZATION(24, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_LAUNCHING_POST_EXTERNAL_INITIALIZATION(24, ERR_REPLICATION_NO_MESSAGE.get()), /** Error disabling replication server. */ ERROR_DISABLING_REPLICATION_SERVER(25, ERR_REPLICATION_NO_MESSAGE.get()), /** Error executing purge historical. */ ERROR_EXECUTING_PURGE_HISTORICAL(26, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_EXECUTING_PURGE_HISTORICAL(26, ERR_REPLICATION_NO_MESSAGE.get()), /** The provided base DNs cannot be purged. */ HISTORICAL_CANNOT_BE_PURGED_ON_BASEDN(27, ERR_REPLICATION_NO_MESSAGE.get()), HISTORICAL_CANNOT_BE_PURGED_ON_BASEDN(27, ERR_REPLICATION_NO_MESSAGE.get()), /** Error launching purge historical. */ ERROR_LAUNCHING_PURGE_HISTORICAL(28, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_LAUNCHING_PURGE_HISTORICAL(28, ERR_REPLICATION_NO_MESSAGE.get()), /** Error loading configuration class in local purge historical. */ ERROR_LOCAL_PURGE_HISTORICAL_CLASS_LOAD(29, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_LOCAL_PURGE_HISTORICAL_CLASS_LOAD(29, ERR_REPLICATION_NO_MESSAGE.get()), /** Error starting server in local purge historical. */ ERROR_LOCAL_PURGE_HISTORICAL_SERVER_START(30, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_LOCAL_PURGE_HISTORICAL_SERVER_START(30, ERR_REPLICATION_NO_MESSAGE.get()), /** Timeout error in local purge historical. */ ERROR_LOCAL_PURGE_HISTORICAL_TIMEOUT(31, ERR_REPLICATION_NO_MESSAGE.get()), ERROR_LOCAL_PURGE_HISTORICAL_TIMEOUT(31, ERR_REPLICATION_NO_MESSAGE.get()), /** Generic error executing local purge historical. */ ERROR_LOCAL_PURGE_HISTORICAL_EXECUTING(32, ERR_REPLICATION_NO_MESSAGE.get()); ERROR_LOCAL_PURGE_HISTORICAL_EXECUTING(32, ERR_REPLICATION_NO_MESSAGE.get()), /** Change number does not exists. */ ERROR_UNKNOWN_CHANGE_NUMBER(33, ERR_REPLICATION_NO_MESSAGE.get()), /** Error launching reset change number task. */ ERROR_LAUNCHING_RESET_CHANGE_NUMBER(34, ERR_REPLICATION_NO_MESSAGE.get()), /** CSN for a given change is not present. */ ERROR_RESET_CHANGE_NUMBER_NO_CSN(35, ERR_REPLICATION_NO_MESSAGE.get()), /** Exception from lower layers. */ ERROR_RESET_CHANGE_NUMBER_PROBLEM(36, ERR_REPLICATION_NO_MESSAGE.get()), /** Target DN for change could not be computed. */ ERROR_RESET_CHANGE_NUMBER_UNKNOWN_BASEDN(37, ERR_REPLICATION_NO_MESSAGE.get()), /** Server configuration differs, base DNs are different. */ ERROR_RESET_CHANGE_NUMBER_BASEDNS_SHOULD_EQUAL(38, ERR_REPLICATION_NO_MESSAGE.get()); private LocalizableMessage message; private int returnCode; opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/SourceDestinationServerUserData.java
File was renamed from opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/InitializeReplicationUserData.java @@ -22,17 +22,19 @@ * * * Copyright 2008-2009 Sun Microsystems, Inc. * Poritions Copyright 2015 ForgeRock AS. */ package org.opends.server.tools.dsreplication; import org.opends.server.types.HostPort; /** * This class is used to store the information provided by the user to * initialize replication. It is required because when we are in interactive * mode the ReplicationCliArgumentParser is not enough. * */ public class InitializeReplicationUserData extends ReplicationUserData public class SourceDestinationServerUserData extends ReplicationUserData { private String hostNameSource; private int portSource; @@ -81,7 +83,25 @@ */ public String getHostNameDestination() { return hostNameDestination; return new HostPort(hostNameDestination, portDestination).toString(); } /** * Returns a host:port string for the source server. * @return a host:port string for the source server */ public String getSourceHostPort() { return new HostPort(hostNameSource, portSource).toString(); } /** * Returns a host:port string for the destination server. * @return a host:port string for the destination server */ public String getDestinationHostPort() { return hostNameDestination + ":" + portDestination; } /** @@ -111,4 +131,21 @@ this.portDestination = portDestination; } /** * Returns a {@link HostPort} representing the source server. * @return a {@link HostPort} representing the source server */ public HostPort getSource() { return new HostPort(hostNameSource, portSource); } /** * Returns a {@link HostPort} representing the destination server. * @return a {@link HostPort} representing the destination server */ public HostPort getDestination() { return new HostPort(hostNameDestination, portDestination); } } opendj-server-legacy/src/messages/org/opends/messages/admin_tool.properties
@@ -514,6 +514,9 @@ historical informations stored in the user entries by replication. Since this \ processing may take a while, you must specify the maximum duration for this \ processing. INFO_DESCRIPTION_RESET_CHANGE_NUMBER=Re-synchronizes the change-log changenumber on one server with the change-log \ changenumber of another. INFO_DESCRIPTION_START_CHANGE_NUMBER=The change number to use as the basis for re-synchronization ERR_REPLICATION_NO_BASE_DN_PROVIDED=You must provide at least one Base \ DN in non interactive mode. ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=You must provide the \ @@ -526,7 +529,7 @@ ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=You have to provide two \ different servers to enable replication. You have provided twice the server \ %s:%s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=You have to provide two \ ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=You have to provide two \ different servers as source and destination of the initialization. You have \ provided twice the server %s:%s ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL=The server administration port \ @@ -574,9 +577,9 @@ second server (the port must be free) INFO_REPLICATION_ENABLE_SECURE2_PROMPT=Do you want replication to use encrypted \ communication when connecting to replication port %s on the second server? INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Specify server \ INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Specify server \ administration connection parameters for the source server INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Specify \ INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Specify \ server administration connection parameters for the destination server ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION=There are no base DNs \ available to enable replication between the two servers. @@ -841,9 +844,7 @@ replication to work with the new base DNs contents. INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=Post initialization \ procedure completed successfully. ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=Error reading the progress of \ the operation. ERR_POOLING_POST_EXTERNAL_INITIALIZATION=Error reading the progress of \ ERR_READING_SERVER_TASK_PROGRESS=Error reading the progress of \ the operation. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=Unexpected error during \ the operation. Task state: %s. Check the error logs of %s for more \ @@ -851,10 +852,10 @@ INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=Unexpected error during the \ operation. Last log details: %s. Task state: %s. Check the error logs of \ %s for more information. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=Unexpected error during \ ERR_UNEXPECTED_DURING_TASK_NO_LOG=Unexpected error during \ the operation. Task state: %s. Check the error logs of %s for more \ information. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=Unexpected error during the \ ERR_UNEXPECTED_DURING_TASK_WITH_LOG=Unexpected error during the \ operation. Last log details: %s. Task state: %s. Check the error logs of \ %s for more information. ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=Error launching the operation. @@ -2923,8 +2924,6 @@ INFO_ERROR_DURING_PURGE_HISTORICAL_LOG=Unexpected error during the \ operation. Last log details: %s. Task state: %s. Check the error logs of \ %s for more information. ERR_POOLING_PURGE_HISTORICAL=Error reading the progress of \ the operation. INFO_PROGRESS_PURGE_HISTORICAL=Purging historical on base DNs:%s%s INFO_PROGRESS_PURGE_HISTORICAL_FINISHED_PROCEDURE=Purge of historical \ has been successfully completed @@ -2977,3 +2976,18 @@ INFO_CTRL_PANEL_BASE_DN_NEW_BACKEND_TYPE_LABEL=Backend Type: ERROR_CTRL_PANEL_CREATE_NEW_BACKEND=Impossible to create the new backend '%s'. Details: %s ERROR_CTRL_PANEL_INITIALIZE_CONFIG_OFFLINE=An error occured while loading the configuration framework: %s INFO_RESET_CHANGE_NUMBER_CONFIRM_RESET=Are you sure that you want to reset the change number on server '%s'? INFO_RESET_CHANGE_NUMBER_TO=Which change number on server '%s' would you like to use as the starting point \ for the change-log's change number on server '%s'? INFO_RESET_CHANGE_NUMBER_TASK_FINISHED=Change-log change number reset task has finished successfully. INFO_RESET_CHANGE_NUMBER_INFO=Resetting change-log's change number of server '%s' to \ ChangeNumber: %s, CSN: %s, base DN: '%s' ERROR_RESET_CHANGE_NUMBER_UNKNOWN_NUMBER=Could not find change number %s on server '%s' ERROR_RESET_CHANGE_NUMBER_NO_CSN_FOUND=Could not find a replication CSN for change number %s on server '%s' ERROR_RESET_CHANGE_NUMBER_EXCEPTION=An error occured while processing task reset change number: %s ERROR_RESET_CHANGE_NUMBER_NO_BASEDN= Could not find the baseDN associated to change number %s. \ Found targetDN '%s' and replicationCSN %s ERROR_RESET_CHANGE_NUMBER_SERVERS_BASEDNS_DIFFER=Cannot reset change-log change number because replicated baseDNs \ on server %s and server %s differ. Since the change number is computed across all the replicated baseDNs, \ the change-log change number can only be reset between two replication servers replicating the exact same baseDNs. opendj-server-legacy/src/messages/org/opends/messages/admin_tool_de.properties
@@ -258,7 +258,7 @@ ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=Sie m\u00fcssen das Passwort des globalen Administrators im nicht interaktiven Modus angeben. Sie k\u00f6nnen hierf\u00fcr die Optionen %s und %s verwenden. ERR_REPLICATION_NOT_A_VALID_BASEDN=Der angegebene Wert %s ist kein g\u00fcltiger Basis-DN. ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=Sie m\u00fcssen zur Aktivierung der Replikation zwei unterschiedliche Server angeben. Sie haben den Server %s zweimal angegeben:%s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=Sie m\u00fcssen zwei unterschiedliche Server als Quelle und Ziel der Initialisierung angeben. Sie haben den Server %s zweimal angegeben:%s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=Sie m\u00fcssen zwei unterschiedliche Server als Quelle und Ziel der Initialisierung angeben. Sie haben den Server %s zweimal angegeben:%s ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL=Der Administrationsanschluss des Servers und der Replikations-Port besitzen denselben Wert in Host %s. Sie haben f\u00fcr beide %s angegeben. ERR_REPLICATION_SAME_REPLICATION_PORT=Sie haben denselben Replikations-Port (%s) f\u00fcr zwei Server auf demselben System (%s) angegeben. ERR_REPLICATION_VALID_SUBCOMMAND_NOT_FOUND=G\u00fcltiger Unterbefehl konnte nicht gefunden werden. Sie m\u00fcssen bei Verwendung der Option %s einen Unterbefehl angeben. @@ -284,8 +284,8 @@ INFO_REPLICATION_ENABLE_REPLICATION_DOMAIN2_PROMPT=Soll dieser Server die Daten enthalten, die repliziert werden sollen? INFO_REPLICATION_ENABLE_REPLICATIONPORT2_PROMPT=Replikations-Port f\u00fcr den zweiten Server (der Port muss frei sein) INFO_REPLICATION_ENABLE_SECURE2_PROMPT=Soll die Replikation eine verschl\u00fcsselte Kommunikation f\u00fcr die Verbindungsherstellung zum Replikations-Port %s auf dem zweiten Server verwenden? INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Serveradministrations-Verbindungsparameter f\u00fcr den Quellserver angeben INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Serveradministrations-Verbindungsparameter f\u00fcr den Zielserver angeben INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Serveradministrations-Verbindungsparameter f\u00fcr den Quellserver angeben INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Serveradministrations-Verbindungsparameter f\u00fcr den Zielserver angeben ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION=Es sind keine Basis-DNs verf\u00fcgbar, um die Replikation zwischen zwei Servern zu aktivieren. ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION_NO_DOMAIN=Es sind keine Basis-DNs verf\u00fcgbar, um die Replikation zwischen zwei Servern zu aktivieren. Sie m\u00fcssen mindestens einen Server angeben, der die replizierten Daten enth\u00e4lt, bevor Sie die Server konfigurieren, die nur das \u00c4nderungsprotokoll der Replikation enthalten (Replikationsserver). INFO_ALREADY_REPLICATED_SUFFIXES=Die folgenden Basis-DNs sind bereits zwischen den beiden Servern repliziert:%n%s @@ -386,12 +386,11 @@ INFO_PROGRESS_POST_EXTERNAL_INITIALIZATION=Replikationsinformationen auf Basis-DN %s werden aktualisiert INFO_PROGRESS_PRE_INITIALIZATION_FINISHED_PROCEDURE=Sie k\u00f6nnen jetzt mit der Initialisierung des Inhalts der Basis-DNs auf allen replizierten Servern fortfahren. Hierf\u00fcr k\u00f6nnen Sie den Befehl import-ldif oder die Bin\u00e4rkopie verwenden. Sie m\u00fcssen auf jedem Server die gleiche LDIF-Datei oder Bin\u00e4rkopie verwenden.%n%nNach Abschluss der Initialisierung m\u00fcssen Sie den Unterbefehl '%s' verwenden, damit die Replikation mit den neuen Basis-DNs-Inhalten funktioniert. INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=Post-Initialisierungs-Verfahren erfolgreich abgeschlossen. ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=Fehler beim Lesen des Fortschritts des Vorgangs. ERR_POOLING_POST_EXTERNAL_INITIALIZATION=Fehler beim Lesen des Fortschritts des Vorgangs. ERR_READING_SERVER_TASK_PROGRESS=Fehler beim Lesen des Fortschritts des Vorgangs. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=Unerwarteter Fehler w\u00e4hrend des Vorgangs. Aufgabenstatus: %s. Pr\u00fcfen Sie die Fehlerprotokolle von %s auf weitere Informationen. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=Unerwarteter Fehler w\u00e4hrend des Vorgangs. Neueste Protokolldetails: %s. Aufgabenstatus: %s. Pr\u00fcfen Sie die Fehlerprotokolle von %s auf weitere Informationen. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=Unerwarteter Fehler w\u00e4hrend des Vorgangs. Aufgabenstatus: %s. Pr\u00fcfen Sie die Fehlerprotokolle von %s auf weitere Informationen. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=Unerwarteter Fehler w\u00e4hrend des Vorgangs. Neueste Protokolldetails: %s. Aufgabenstatus: %s. Pr\u00fcfen Sie die Fehlerprotokolle von %s auf weitere Informationen. ERR_UNEXPECTED_DURING_TASK_NO_LOG=Unerwarteter Fehler w\u00e4hrend des Vorgangs. Aufgabenstatus: %s. Pr\u00fcfen Sie die Fehlerprotokolle von %s auf weitere Informationen. ERR_UNEXPECTED_DURING_TASK_WITH_LOG=Unerwarteter Fehler w\u00e4hrend des Vorgangs. Neueste Protokolldetails: %s. Aufgabenstatus: %s. Pr\u00fcfen Sie die Fehlerprotokolle von %s auf weitere Informationen. ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=Fehler beim Starten des Vorgangs. ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION=Fehler beim Starten des Vorgangs. INFO_REPLICATION_SUBCOMMAND_PROMPT=Sie haben folgende M\u00f6glichkeiten: opendj-server-legacy/src/messages/org/opends/messages/admin_tool_es.properties
@@ -258,7 +258,7 @@ ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=Debe proporcionarse la contrase\u00f1a del administrador global en un modo no interactivo. Puede proporcionarse por medio de las opciones %s o %s ERR_REPLICATION_NOT_A_VALID_BASEDN=El valor proporcionado %s no es un ND de base v\u00e1lido. ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=Usted tiene que proporcionar dos servidores diferentes para permitir la replicaci\u00f3n. Ha proporcionado dos veces el servidor %s:%s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=Deben proporcionarse dos servidores diferentes como origen y destino de la inicializaci\u00f3n. Ha proporcionado dos veces el servidor %s:%s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=Deben proporcionarse dos servidores diferentes como origen y destino de la inicializaci\u00f3n. Ha proporcionado dos veces el servidor %s:%s ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL=El puerto de administraci\u00f3n del servidor y el puerto de repetici\u00f3n tienen el mismo valor en el host %s. Ha proporcionado %s para ambos. ERR_REPLICATION_SAME_REPLICATION_PORT=Ha proporcionado el mismo puerto de repetici\u00f3n (%s) para dos servidores ubicados en la misma m\u00e1quina (%s). ERR_REPLICATION_VALID_SUBCOMMAND_NOT_FOUND=No pudo encontrarse un subcomando v\u00e1lido. Debe especificarse un subcomando al emplear la opci\u00f3n %s @@ -284,8 +284,8 @@ INFO_REPLICATION_ENABLE_REPLICATION_DOMAIN2_PROMPT=\u00bfContendr\u00e1 este servidor los datos que va a repetir? INFO_REPLICATION_ENABLE_REPLICATIONPORT2_PROMPT=Puerto de r\u00e9plica del segundo servidor (el puerto debe estar libre) INFO_REPLICATION_ENABLE_SECURE2_PROMPT=\u00bfDesea que la repetici\u00f3n utilice una comunicaci\u00f3n cifrada al establecer conexi\u00f3n con el puerto de r\u00e9plica %s en el segundo servidor? INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Especifique los par\u00e1metros de la conexi\u00f3n de administraci\u00f3n de servidor para el servidor de origen INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Especifique los par\u00e1metros de la conexi\u00f3n de administraci\u00f3n de servidor para el servidor de destino INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Especifique los par\u00e1metros de la conexi\u00f3n de administraci\u00f3n de servidor para el servidor de origen INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Especifique los par\u00e1metros de la conexi\u00f3n de administraci\u00f3n de servidor para el servidor de destino ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION=No hay ning\u00fan ND de base disponible para habilitar la repetici\u00f3n entre los dos servidores. ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION_NO_DOMAIN=No hay ning\u00fan ND de base disponible para habilitar la repetici\u00f3n entre los dos servidores. Debe especificarse al menos un servidor que contendr\u00e1 los datos repetidos antes de configurar servidores que s\u00f3lo contendr\u00e1n el registro de cambios de la repetici\u00f3n (servidores de repetici\u00f3n) INFO_ALREADY_REPLICATED_SUFFIXES=Ya se han replicado los siguientes ND de base entre los dos servidores:%n%s @@ -386,12 +386,11 @@ INFO_PROGRESS_POST_EXTERNAL_INITIALIZATION=Actualizando la informaci\u00f3n de r\u00e9plica en el ND de base %s INFO_PROGRESS_PRE_INITIALIZATION_FINISHED_PROCEDURE=Ahora puede continuar con la inicializaci\u00f3n del contenido de los ND de base en todos los servidores replicados. Para ello, puede utilizar el comando "import-ldif" o el m\u00e9todo de copia binaria. Debe usar el mismo archivo LDIF o copia binaria en cada servidor.%n%nUna vez completada la inicializaci\u00f3n, debe utilizar el subcomando '%s' para que la r\u00e9plica funcione con el contenido de los nuevos ND de base. INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=El procedimiento posterior a la inicializaci\u00f3n se ha completado correctamente. ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=Error al leer el progreso de la operaci\u00f3n. ERR_POOLING_POST_EXTERNAL_INITIALIZATION=Error al leer el progreso de la operaci\u00f3n. ERR_READING_SERVER_TASK_PROGRESS=Error al leer el progreso de la operaci\u00f3n. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=Error inesperado durante la operaci\u00f3n. Estado de la tarea: %s. Consulte los registros de errores de %s para obtener m\u00e1s informaci\u00f3n. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=Error inesperado durante la operaci\u00f3n. Detalles del \u00faltimo registro: %s. Estado de la tarea: %s. Consulte los registros de errores de %s para obtener m\u00e1s informaci\u00f3n. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=Error inesperado durante la operaci\u00f3n. Estado de la tarea: %s. Consulte los registros de errores de %s para obtener m\u00e1s informaci\u00f3n. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=Error inesperado durante la operaci\u00f3n. Detalles del \u00faltimo registro: %s. Estado de la tarea: %s. Consulte los registros de errores de %s para obtener m\u00e1s informaci\u00f3n. ERR_UNEXPECTED_DURING_TASK_NO_LOG=Error inesperado durante la operaci\u00f3n. Estado de la tarea: %s. Consulte los registros de errores de %s para obtener m\u00e1s informaci\u00f3n. ERR_UNEXPECTED_DURING_TASK_WITH_LOG=Error inesperado durante la operaci\u00f3n. Detalles del \u00faltimo registro: %s. Estado de la tarea: %s. Consulte los registros de errores de %s para obtener m\u00e1s informaci\u00f3n. ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=Error al iniciar la operaci\u00f3n. ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION=Error al iniciar la operaci\u00f3n. INFO_REPLICATION_SUBCOMMAND_PROMPT=\u00bfQu\u00e9 desea hacer? opendj-server-legacy/src/messages/org/opends/messages/admin_tool_fr.properties
@@ -258,7 +258,7 @@ ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=Vous devez fournir le mot de passe de l'administrateur global en mode non interactif. Vous pouvez entrer cette valeur \u00e0 l'aide des options %s ou %s. ERR_REPLICATION_NOT_A_VALID_BASEDN=La valeur %s fournie n'est pas un DN de base valide. ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=Vous devez indiquer deux serveurs diff\u00e9rents pour activer la r\u00e9plication. Vous avez indiqu\u00e9 deux fois le serveur %s\u00a0: %s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=Vous devez indiquer deux serveurs diff\u00e9rents en tant que source et destination de l'initialisation. Vous avez indiqu\u00e9 deux fois le serveur %s\u00a0: %s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=Vous devez indiquer deux serveurs diff\u00e9rents en tant que source et destination de l'initialisation. Vous avez indiqu\u00e9 deux fois le serveur %s\u00a0: %s ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL=Le port d'administration du serveur et le port de r\u00e9plication ont la m\u00eame valeur dans l'h\u00f4te %s. Vous avez indiqu\u00e9 %s pour les deux. ERR_REPLICATION_SAME_REPLICATION_PORT=Vous avez indiqu\u00e9 le m\u00eame port de r\u00e9plication (%s) pour deux serveurs r\u00e9sidant sur la m\u00eame machine (%s). ERR_REPLICATION_VALID_SUBCOMMAND_NOT_FOUND=Impossible de trouver une sous-commande valide. Vous devez indiquer une sous-commande pour utiliser l'option %s. @@ -284,8 +284,8 @@ INFO_REPLICATION_ENABLE_REPLICATION_DOMAIN2_PROMPT=Ce serveur contient-il les donn\u00e9es qui seront r\u00e9pliqu\u00e9es ? INFO_REPLICATION_ENABLE_REPLICATIONPORT2_PROMPT=Port de r\u00e9plication pour le second serveur (le port doit \u00eatre libre) INFO_REPLICATION_ENABLE_SECURE2_PROMPT=Souhaitez-vous que la r\u00e9plication utilise la communication chiffr\u00e9e pour la connexion au port de r\u00e9plication %s sur le second serveur\u00a0? INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Entrez les param\u00e8tres de connexion pour le serveur source INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Entrez les param\u00e8tres de connexion pour le serveur de destination INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Entrez les param\u00e8tres de connexion pour le serveur source INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Entrez les param\u00e8tres de connexion pour le serveur de destination ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION=Aucun DN de base n'est disponible pour permettre la r\u00e9plication entre les deux serveurs. ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION_NO_DOMAIN=Aucun DN de base n'est disponible pour permettre la r\u00e9plication entre les deux serveurs. Vous devez sp\u00e9cifier au moins un serveur o\u00f9 stocker les donn\u00e9es r\u00e9pliqu\u00e9es, avant de configurer les serveurs qui doivent uniquement stocker le journal des modifications de r\u00e9plication (serveurs de r\u00e9plication). INFO_ALREADY_REPLICATED_SUFFIXES=Les DN de base suivants ont d\u00e9j\u00e0 \u00e9t\u00e9 r\u00e9pliqu\u00e9s entre les deux serveurs\u00a0: %n%s @@ -386,12 +386,11 @@ INFO_PROGRESS_POST_EXTERNAL_INITIALIZATION=Mise \u00e0 jour des informations de r\u00e9plication sur le DN de base %s INFO_PROGRESS_PRE_INITIALIZATION_FINISHED_PROCEDURE=Vous pouvez d\u00e9sormais proc\u00e9der \u00e0 l'initialisation du contenu des DN de base sur tous les serveurs r\u00e9pliqu\u00e9s. Pour ce faire, vous pouvez utiliser la commander import-ldif ou bien la copie binaire. Vous devez utiliser le m\u00eame fichier LDIF ou la m\u00eame copie binaire sur chaque serveur.%n%nUne fois l'initialisation termin\u00e9e, utilisez la sous-commande ''%s' pour que la r\u00e9plication fonctionne avec le contenu des nouveaux DN de base. INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=Proc\u00e9dure post-initialisation termin\u00e9e. ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=Erreur lors de la lecture de la progression de l'op\u00e9ration. ERR_POOLING_POST_EXTERNAL_INITIALIZATION=Erreur lors de la lecture de la progression de l'op\u00e9ration. ERR_READING_SERVER_TASK_PROGRESS=Erreur lors de la lecture de la progression de l'op\u00e9ration. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=Une erreur inattendue s'est produite au cours de l'op\u00e9ration. Statut de la t\u00e2che\u00a0: %s. Consultez les journaux d'erreurs de %s pour plus d'informations. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=Une erreur inattendue s'est produite au cours de l'op\u00e9ration. Derniers d\u00e9tails du fichier journal\u00a0: %s. Statut de la t\u00e2che\u00a0 %s. Consultez les journaux d'erreurs de %s pour plus d'informations. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=Une erreur inattendue s'est produite au cours de l'op\u00e9ration. Statut de la t\u00e2che\u00a0: %s. Consultez les journaux d'erreurs de %s pour plus d'informations. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=Une erreur inattendue s'est produite au cours de l'op\u00e9ration. Derniers d\u00e9tails du fichier journal\u00a0: %s. Statut de la t\u00e2che\u00a0 %s. Consultez les journaux d'erreurs de %s pour plus d'informations. ERR_UNEXPECTED_DURING_TASK_NO_LOG=Une erreur inattendue s'est produite au cours de l'op\u00e9ration. Statut de la t\u00e2che\u00a0: %s. Consultez les journaux d'erreurs de %s pour plus d'informations. ERR_UNEXPECTED_DURING_TASK_WITH_LOG=Une erreur inattendue s'est produite au cours de l'op\u00e9ration. Derniers d\u00e9tails du fichier journal\u00a0: %s. Statut de la t\u00e2che\u00a0 %s. Consultez les journaux d'erreurs de %s pour plus d'informations. ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=Erreur lors du d\u00e9marrage de l'op\u00e9ration. ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION=Erreur lors du d\u00e9marrage de l'op\u00e9ration. INFO_REPLICATION_SUBCOMMAND_PROMPT=Que souhaitez-vous faire\u00a0? opendj-server-legacy/src/messages/org/opends/messages/admin_tool_ja.properties
@@ -258,7 +258,7 @@ ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=\u975e\u5bfe\u8a71\u578b\u30e2\u30fc\u30c9\u3067\u30b0\u30ed\u30fc\u30d0\u30eb\u7ba1\u7406\u8005\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002%s \u307e\u305f\u306f %s \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002 ERR_REPLICATION_NOT_A_VALID_BASEDN=\u6307\u5b9a\u3055\u308c\u305f\u5024 %s \u306f\u6709\u52b9\u306a\u30d9\u30fc\u30b9 DN \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b 2 \u3064\u306e\u7570\u306a\u308b\u30b5\u30fc\u30d0\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b5\u30fc\u30d0\u30fc %s \u3092 2 \u56de\u6307\u5b9a\u3057\u307e\u3057\u305f: %s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=\u521d\u671f\u5316\u306e\u30bd\u30fc\u30b9\u304a\u3088\u3073\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u3057\u3066 2 \u3064\u306e\u7570\u306a\u308b\u30b5\u30fc\u30d0\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b5\u30fc\u30d0\u30fc %s \u3092 2 \u56de\u6307\u5b9a\u3057\u307e\u3057\u305f: %s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=\u521d\u671f\u5316\u306e\u30bd\u30fc\u30b9\u304a\u3088\u3073\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u3057\u3066 2 \u3064\u306e\u7570\u306a\u308b\u30b5\u30fc\u30d0\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b5\u30fc\u30d0\u30fc %s \u3092 2 \u56de\u6307\u5b9a\u3057\u307e\u3057\u305f: %s ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL=\u30db\u30b9\u30c8 %s \u3067\u30b5\u30fc\u30d0\u30fc\u7ba1\u7406\u30dd\u30fc\u30c8\u3068\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30dd\u30fc\u30c8\u306e\u5024\u304c\u540c\u3058\u3067\u3059\u3002\u4e21\u65b9\u306b %s \u3092\u6307\u5b9a\u3057\u307e\u3057\u305f\u3002 ERR_REPLICATION_SAME_REPLICATION_PORT=\u540c\u3058\u30de\u30b7\u30f3 (%2$s) \u4e0a\u306e 2 \u3064\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u540c\u3058\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30dd\u30fc\u30c8 (%1$s) \u3092\u6307\u5b9a\u3057\u307e\u3057\u305f\u3002 ERR_REPLICATION_VALID_SUBCOMMAND_NOT_FOUND=\u6709\u52b9\u306a\u30b5\u30d6\u30b3\u30de\u30f3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30aa\u30d7\u30b7\u30e7\u30f3 %s \u3092\u4f7f\u7528\u3059\u308b\u3068\u304d\u306f\u30b5\u30d6\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 @@ -284,8 +284,8 @@ INFO_REPLICATION_ENABLE_REPLICATION_DOMAIN2_PROMPT=\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u3001\u30ec\u30d7\u30ea\u30b1\u30fc\u30c8\u5bfe\u8c61\u3068\u306a\u308b\u30c7\u30fc\u30bf\u3092\u542b\u3081\u307e\u3059\u304b ? INFO_REPLICATION_ENABLE_REPLICATIONPORT2_PROMPT=2 \u756a\u76ee\u306e\u30b5\u30fc\u30d0\u30fc\u306e\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30dd\u30fc\u30c8 (\u672a\u4f7f\u7528\u306e\u30dd\u30fc\u30c8) INFO_REPLICATION_ENABLE_SECURE2_PROMPT=2 \u756a\u76ee\u306e\u30b5\u30fc\u30d0\u30fc\u306e\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30dd\u30fc\u30c8 %s \u3078\u306e\u63a5\u7d9a\u6642\u306b\u3001\u6697\u53f7\u5316\u3055\u308c\u305f\u901a\u4fe1\u3092\u4f7f\u3063\u3066\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3057\u307e\u3059\u304b ? INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> \u30bd\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306e\u30b5\u30fc\u30d0\u30fc\u7ba1\u7406\u63a5\u7d9a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059 INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> \u5b9b\u5148\u30b5\u30fc\u30d0\u30fc\u306e\u30b5\u30fc\u30d0\u30fc\u7ba1\u7406\u63a5\u7d9a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059 INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> \u30bd\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306e\u30b5\u30fc\u30d0\u30fc\u7ba1\u7406\u63a5\u7d9a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059 INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> \u5b9b\u5148\u30b5\u30fc\u30d0\u30fc\u306e\u30b5\u30fc\u30d0\u30fc\u7ba1\u7406\u63a5\u7d9a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059 ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION=2 \u3064\u306e\u30b5\u30fc\u30d0\u30fc\u9593\u3067\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u53ef\u80fd\u306a\u30d9\u30fc\u30b9 DN \u304c\u3042\u308a\u307e\u305b\u3093\u3002 ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION_NO_DOMAIN=2 \u3064\u306e\u30b5\u30fc\u30d0\u30fc\u9593\u3067\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u53ef\u80fd\u306a\u30d9\u30fc\u30b9 DN \u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u66f4\u65b0\u5c65\u6b74\u30ed\u30b0\u3060\u3051\u3092\u542b\u3081\u308b\u30b5\u30fc\u30d0\u30fc (\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d0\u30fc) \u3092\u69cb\u6210\u3059\u308b\u524d\u306b\u3001\u30ec\u30d7\u30ea\u30b1\u30fc\u30c8\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u542b\u3081\u308b\u30b5\u30fc\u30d0\u30fc\u3092 1 \u3064\u4ee5\u4e0a\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 INFO_ALREADY_REPLICATED_SUFFIXES=\u6b21\u306e\u30d9\u30fc\u30b9 DN \u304c 2 \u3064\u306e\u30b5\u30fc\u30d0\u30fc\u9593\u3067\u3059\u3067\u306b\u30ec\u30d7\u30ea\u30b1\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059: %n%s @@ -383,12 +383,11 @@ INFO_PROGRESS_POST_EXTERNAL_INITIALIZATION=\u30d9\u30fc\u30b9 DN %s \u306e\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u60c5\u5831\u3092\u66f4\u65b0\u3057\u3066\u3044\u307e\u3059 INFO_PROGRESS_PRE_INITIALIZATION_FINISHED_PROCEDURE=\u3053\u308c\u3067\u3001\u30ec\u30d7\u30ea\u30b1\u30fc\u30c8\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d0\u30fc\u4e0a\u3067\u30d9\u30fc\u30b9 DN \u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u521d\u671f\u5316\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u64cd\u4f5c\u306b\u306f import-ldif \u307e\u305f\u306f\u30d0\u30a4\u30ca\u30ea\u30b3\u30d4\u30fc\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u5404\u30b5\u30fc\u30d0\u30fc\u4e0a\u3067\u3001\u540c\u3058 LDIF \u30d5\u30a1\u30a4\u30eb/\u30d0\u30a4\u30ca\u30ea\u30b3\u30d4\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002%n%n\u521d\u671f\u5316\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u65b0\u3057\u3044\u30d9\u30fc\u30b9 DN \u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u5bfe\u3057\u3066\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30b5\u30d6\u30b3\u30de\u30f3\u30c9 '%s' \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=\u521d\u671f\u5316\u5f8c\u306e\u624b\u9806\u304c\u6b63\u5e38\u306b\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=\u64cd\u4f5c\u306e\u9032\u884c\u72b6\u6cc1\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 ERR_POOLING_POST_EXTERNAL_INITIALIZATION=\u64cd\u4f5c\u306e\u9032\u884c\u72b6\u6cc1\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 ERR_READING_SERVER_TASK_PROGRESS=\u64cd\u4f5c\u306e\u9032\u884c\u72b6\u6cc1\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=\u64cd\u4f5c\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u30bf\u30b9\u30af\u72b6\u614b: %s\u3002\u8a73\u7d30\u306f %s \u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=\u64cd\u4f5c\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u6700\u65b0\u30ed\u30b0\u306e\u8a73\u7d30: %s\u3002\u30bf\u30b9\u30af\u72b6\u614b: %s\u3002\u8a73\u7d30\u306f %s \u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=\u64cd\u4f5c\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u30bf\u30b9\u30af\u72b6\u614b: %s\u3002\u8a73\u7d30\u306f %s \u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=\u64cd\u4f5c\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u6700\u65b0\u30ed\u30b0\u306e\u8a73\u7d30: %s\u3002\u30bf\u30b9\u30af\u72b6\u614b: %s\u3002\u8a73\u7d30\u306f %s \u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 ERR_UNEXPECTED_DURING_TASK_NO_LOG=\u64cd\u4f5c\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u30bf\u30b9\u30af\u72b6\u614b: %s\u3002\u8a73\u7d30\u306f %s \u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 ERR_UNEXPECTED_DURING_TASK_WITH_LOG=\u64cd\u4f5c\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u6700\u65b0\u30ed\u30b0\u306e\u8a73\u7d30: %s\u3002\u30bf\u30b9\u30af\u72b6\u614b: %s\u3002\u8a73\u7d30\u306f %s \u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=\u64cd\u4f5c\u306e\u958b\u59cb\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION=\u64cd\u4f5c\u306e\u958b\u59cb\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 INFO_REPLICATION_SUBCOMMAND_PROMPT=\u3069\u306e\u51e6\u7406\u3092\u5b9f\u884c\u3057\u307e\u3059\u304b? opendj-server-legacy/src/messages/org/opends/messages/admin_tool_ko.properties
@@ -207,7 +207,7 @@ ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=\ube44\ub300\ud654\uc2dd \ubaa8\ub4dc\uc5d0\uc11c \uc804\uc5ed \uad00\ub9ac\uc790\uc758 \ube44\ubc00\ubc88\ud638\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. %s \ub610\ub294 %s \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. ERR_REPLICATION_NOT_A_VALID_BASEDN=\uc81c\uacf5\ub41c \uac12 %s\uc740(\ub294) \uc62c\ubc14\ub978 \uae30\ubcf8 DN\uc774 \uc544\ub2d9\ub2c8\ub2e4. ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=\ubcf5\uc81c\ub97c \ud65c\uc131\ud654\ud558\ub824\uba74 \ub2e4\ub978 \ub450 \uc11c\ubc84\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. %s \uc11c\ubc84\ub97c \ub450 \ubc88 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4:%s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=\ub2e4\ub978 \ub450 \uc11c\ubc84\ub97c \ucd08\uae30\ud654\uc758 \uc18c\uc2a4\uc640 \ub300\uc0c1\uc73c\ub85c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. %s \uc11c\ubc84\ub97c \ub450 \ubc88 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4:%s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=\ub2e4\ub978 \ub450 \uc11c\ubc84\ub97c \ucd08\uae30\ud654\uc758 \uc18c\uc2a4\uc640 \ub300\uc0c1\uc73c\ub85c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. %s \uc11c\ubc84\ub97c \ub450 \ubc88 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4:%s ERR_REPLICATION_SAME_REPLICATION_PORT=\ub3d9\uc77c\ud55c \uc2dc\uc2a4\ud15c(%s)\uc5d0 \uc788\ub294 \ub450 \uc11c\ubc84\uc5d0 \ub3d9\uc77c\ud55c \ubcf5\uc81c \ud3ec\ud2b8(%s)\ub97c \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4. ERR_REPLICATION_VALID_SUBCOMMAND_NOT_FOUND=\uc720\ud6a8\ud55c \ud558\uc704 \uba85\ub839\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. %s \uc635\uc158\uc744 \uc0ac\uc6a9\ud560 \uacbd\uc6b0 \ud558\uc704 \uba85\ub839\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. ERR_REPLICATION_STATUS_QUIET='%s' \ud558\uc704 \uba85\ub839\uc774 %s \uc778\uc218\uc640 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. @@ -270,12 +270,11 @@ INFO_PROGRESS_PRE_EXTERNAL_INITIALIZATION=\uae30\ubcf8 DN %s\uc744(\ub97c) \uc678\ubd80\uc5d0\uc11c \ucd08\uae30\ud654\ud558\ub3c4\ub85d \uc900\ube44 INFO_PROGRESS_POST_EXTERNAL_INITIALIZATION=\uae30\ubcf8 DN %s\uc5d0\uc11c \ubcf5\uc81c \uc815\ubcf4 \uc5c5\ub370\uc774\ud2b8 INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=\uc0ac\ud6c4 \ucd08\uae30\ud654 \uc808\ucc28\ub97c \uc644\ub8cc\ud588\uc2b5\ub2c8\ub2e4. ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=\uc791\uc5c5 \uc9c4\ud589\ub960\uc744 \uc77d\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. ERR_POOLING_POST_EXTERNAL_INITIALIZATION=\uc791\uc5c5 \uc9c4\ud589\ub960\uc744 \uc77d\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. ERR_READING_SERVER_TASK_PROGRESS=\uc791\uc5c5 \uc9c4\ud589\ub960\uc744 \uc77d\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=\uc791\uc5c5 \uc911\uc5d0 \uc608\uc0c1\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uc791\uc5c5 \uc0c1\ud0dc: %s. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 %s\uc758 \uc624\ub958 \ub85c\uadf8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=\uc791\uc5c5 \uc911\uc5d0 \uc608\uc0c1\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9 \ub85c\uadf8 \uc138\ubd80 \uc815\ubcf4: %s. \uc791\uc5c5 \uc0c1\ud0dc: %s. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 %s\uc758 \uc624\ub958 \ub85c\uadf8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=\uc791\uc5c5 \uc911\uc5d0 \uc608\uc0c1\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uc791\uc5c5 \uc0c1\ud0dc: %s. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 %s\uc758 \uc624\ub958 \ub85c\uadf8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=\uc791\uc5c5 \uc911\uc5d0 \uc608\uc0c1\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9 \ub85c\uadf8 \uc138\ubd80 \uc815\ubcf4: %s. \uc791\uc5c5 \uc0c1\ud0dc: %s. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 %s\uc758 \uc624\ub958 \ub85c\uadf8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. ERR_UNEXPECTED_DURING_TASK_NO_LOG=\uc791\uc5c5 \uc911\uc5d0 \uc608\uc0c1\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uc791\uc5c5 \uc0c1\ud0dc: %s. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 %s\uc758 \uc624\ub958 \ub85c\uadf8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. ERR_UNEXPECTED_DURING_TASK_WITH_LOG=\uc791\uc5c5 \uc911\uc5d0 \uc608\uc0c1\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9 \ub85c\uadf8 \uc138\ubd80 \uc815\ubcf4: %s. \uc791\uc5c5 \uc0c1\ud0dc: %s. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 %s\uc758 \uc624\ub958 \ub85c\uadf8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=\uc791\uc5c5\uc744 \uc2dc\uc791\ud558\ub294 \uc911\uc5d0 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION=\uc791\uc5c5\uc744 \uc2dc\uc791\ud558\ub294 \uc911\uc5d0 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. INFO_REPLICATION_SUBCOMMAND_PROMPT=\uc5b4\ub5bb\uac8c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? opendj-server-legacy/src/messages/org/opends/messages/admin_tool_pl.properties
@@ -65,7 +65,7 @@ ERR_NO_SUFFIXES_SELECTED_TO_PRE_EXTERNAL_INITIALIZATION=Musisz poda\u0107 bazowe DN, kt\u00f3re b\u0119d\u0105 zainicjowane poleceniem import-ldif lub kopiowaniem binarnym. INFO_DESCRIPTION_ENABLE_REPLICATION_NO_SCHEMA_REPLICATION=Nie powielaj schematu pomi\u0119dzy serwerami INFO_PROTOCOL_COLUMN=Protok\u00f3\u0142 INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=Nieoczekiwany b\u0142\u0105d podczas operacji. Stan zadania: %s Sprawd\u017a logi b\u0142\u0119d\u00f3w %s aby uzyska\u0107 wi\u0119cej informacji. ERR_UNEXPECTED_DURING_TASK_NO_LOG=Nieoczekiwany b\u0142\u0105d podczas operacji. Stan zadania: %s Sprawd\u017a logi b\u0142\u0119d\u00f3w %s aby uzyska\u0107 wi\u0119cej informacji. INFO_CTRL_PANEL_INDEX_EQUALITY=R\u00f3wno\u015b\u0107 INFO_UNINSTALL_CLI_REFERENCED_HOSTNAME_PROMPT=Nazwa tego hosta (lub adres IP) jaka wyst\u0119puje w zdalnym odwo\u0142aniu na serwerach powielaj\u0105cych INFO_CTRL_PANEL_BACKUP_TASK_NAME=Kopia zapasowa @@ -86,7 +86,7 @@ INFO_CTRL_PANEL_EQUALITY_LABEL=R\u00f3wno\u015b\u0107 INFO_CONFIRM_UNINSTALL_REPLICATION_SERVER_RUNNING_MSG=Serwer jest skonfigurowany do wykonywania replikacji.%nJe\u015bli serwer powiela zawarto\u015b\u0107 z innymi serwerami, musisz autentykowa\u0107 si\u0119 jako administrator aby usun\u0105\u0107 odwo\u0142ania do tego serwera na serwerach powielaj\u0105cych.%n%nKliknij 'Tak' aby autentykowa\u0107 si\u0119 jako administrator w celu usuni\u0119cia zdalnych odwo\u0142a\u0144.%nKliknij 'Nie' aby kontynuowa\u0107 deinstalacj\u0119 bez uaktualniania zdalnych odwo\u0142a\u0144. INFO_CTRL_PANEL_ADD_GROUPS_BUTTON_LABEL=Dodaj grupy... INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Podaj parametry po\u0142\u0105czenia administracyjnego dla serwera \u017ar\u00f3d\u0142owego INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> Podaj parametry po\u0142\u0105czenia administracyjnego dla serwera \u017ar\u00f3d\u0142owego ERR_CTRL_PANEL_INVALID_BASE_DN_FOR_VLV_PROVIDED=Podany podstawowy DN nie jest prawid\u0142owy. Szczeg\u00f3\u0142y: %s INFO_DESCRIPTION_SUBCMD_STATUS_REPLICATION=Wy\u015bwietla list\u0119 podstawowych informacji dotycz\u0105cych powielania bazowych DN zdefiniowanych serwer\u00f3w. Je\u015bli nie okre\u015blono bazowej DN, informacje dotycz\u0105ce wszystkich bazowych DN b\u0119d\u0105 wy\u015bwietlone ERR_REPLICATION_STATUS_READING_REGISTERED_SERVERS=Wy\u015bwietlone informacje mog\u0105 by\u0107 niekompletne poniewa\u017c wyst\u0105pi\u0142y nast\u0119puj\u0105ce b\u0142\u0119dy podczas czytania konfiguracji instniej\u0105cych serwer\u00f3w:%n%s @@ -103,7 +103,7 @@ INFO_DISABLE_REPLICATION_ONE_POINT_OF_FAILURE_PROMPT=You have decided to disable the replication server (replication changelog). After disabling the replication server only one replication server will be configured for the following suffixes:%n%s%nTo avoid a single point of failure at least two replication servers must be configured.%nCzy chcesz kontynuowa\u0107? INFO_CTRL_PANEL_CREATING_NEW_ENTRY_SUCCESSFUL_DETAILS=Wpis utworzony pomy\u015blnie. INFO_CLI_UNINSTALL_CONFIRM_LOGS=Usun\u0105\u0107 pliki log\u00f3w? ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=Musisz zdefiniowa\u0107 dwa r\u00f3\u017cne serwery jako \u017ar\u00f3d\u0142o i cel inicjalizacji. Poda\u0142e\u015b ten sam serwer %s dwa razy:%s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=Musisz zdefiniowa\u0107 dwa r\u00f3\u017cne serwery jako \u017ar\u00f3d\u0142o i cel inicjalizacji. Poda\u0142e\u015b ten sam serwer %s dwa razy:%s INFO_REPLICATION_POST_EXTERNAL_INITIALIZATION_MENU_PROMPT=Po Zewn\u0119trznej Inicjalizacji INFO_ADMINISTRATOR_PWD_PROMPT=Has\u0142o Globalnego Administratora: ERR_REPLICATION_NO_BASE_DN_PROVIDED=Musisz poda\u0107 przynajmniej jedn\u0105 bazow\u0105 DN w trybie nieinteraktywnym. @@ -164,7 +164,7 @@ INFO_CTRL_PANEL_RUNNING_TASKS_CHANGE_SERVER_CONFIRMATION_DETAILS=The following tasks are running:<br>%s<br><br>If you connect to another server the tasks will continue but you will have to check the log files to see if they complete successfully.<br><br>Czy chcesz kontynuowa\u0107? INFO_CTRL_PANEL_VALUE_IN_BASE64=- Waro\u015b\u0107 w Base64 - INFO_REPLICATION_STATUS_HEADER_AGE_OF_OLDEST_MISSING_CHANGE=W.N.B.Z. (2) INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Podaj parametry po\u0142\u0105czenia administracyjnego dla serwera docelowego INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> Podaj parametry po\u0142\u0105czenia administracyjnego dla serwera docelowego INFO_REPLICATION_SUCCESSFUL=Operacja zako\u0144czona pomy\u015blnie INFO_REPLICATION_PRE_EXTERNAL_INITIALIZATION_MENU_PROMPT=Przed Zewn\u0119trzn\u0105 Inicjalizacj\u0105 INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=Nieoczekiwany b\u0142\u0105d podczas operacji. Stan zadania: %s Sprawd\u017a logi b\u0142\u0119d\u00f3w %s aby uzyska\u0107 wi\u0119cej informacji. @@ -439,7 +439,7 @@ INFO_CTRL_PANEL_INDEX_PRESENCE=Obecno\u015b\u0107 ERR_REPLICATION_DISABLE_SUFFIXES_NOT_FOUND=Nast\u0119puj\u0105ce bazowe DN nie mog\u0142y by\u0107 znalezione na serwerze:%n%s INFO_CTRL_PANEL_AUTHENTICATION_REQUIRED_FOR_DISABLE_BACKEND=Serwer jest uruchomiony. You must provide authentication to disable the backend before rebuilding the indexes. ERR_POOLING_POST_EXTERNAL_INITIALIZATION=B\u0142\u0105d podczas odczytu post\u0119pu operacji. ERR_READING_SERVER_TASK_PROGRESS=B\u0142\u0105d podczas odczytu post\u0119pu operacji. ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION_NO_DOMAIN=Nie ma dost\u0119pnych DN aby w\u0142\u0105czy\u0107 powielanie pomi\u0119dzy dwoma serwerami. You must specify at least one server that will contain the replicated data, before configuring servers that will only contain the replication changelog (replication servers). INFO_CONFIRM_UNINSTALL_SERVER_NOT_RUNNING_MSG=Potwierd\u017a deinstalacj\u0119%nWszystkie zaznaczone pliki zostan\u0105 nieodwracalnie usuni\u0119te, czy jeste\u015b pewien \u017ce chcesz kontynuowa\u0107? INFO_CTRL_PANEL_STOPPING_SERVER_SUMMARY=Zatrzymywanie serwera... @@ -547,7 +547,7 @@ INFO_CLI_UNINSTALL_CONFIRM_DELETE_FILES=Pliki zostan\u0105 nieodwracalnie usuni\u0119te, czy napewno chcesz kontynuowa\u0107? INFO_CTRL_PANEL_ATTRIBUTE_SYNTAX_TITLE=Sk\u0142adnia Atrybut\u00f3w INFO_CLI_UNINSTALL_CONFIRM_BACKUPS=Usun\u0105\u0107 pliki archiwum z katalogu bak? INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=Nieoczekiwany b\u0142\u0105d podczas operacji. Szczeg\u00f3\u0142y ostatniego logu: %s. Stan zadania: %s. Sprawd\u017a logi b\u0142\u0119d\u00f3w %s aby uzyska\u0107 wi\u0119cej informacji. ERR_UNEXPECTED_DURING_TASK_WITH_LOG=Nieoczekiwany b\u0142\u0105d podczas operacji. Szczeg\u00f3\u0142y ostatniego logu: %s. Stan zadania: %s. Sprawd\u017a logi b\u0142\u0119d\u00f3w %s aby uzyska\u0107 wi\u0119cej informacji. INFO_REPLICATION_POST_EXTERNAL_INITIALIZATION_SUFFIX_PROMPT=Czy zainicjowa\u0142e\u015b bazow\u0105 DN %s u\u017cywaj\u0105c import-ldif lub binarnego kopiowania? INFO_REPLICATION_ENABLE_REPLICATIONPORT2_PROMPT=Port powielania dla drugiego serwera (port musi by\u0107 wolny) INFO_SERVER_UNKNOWN_STATUS_LABEL=Nieznany @@ -558,6 +558,5 @@ INFO_UNINSTALL_LOGIN_HOST_NAME_LABEL=Nazwa Hosta: INFO_CTRL_PANEL_STOPPING_SERVER_SUCCESSFUL_DETAILS=Serwer zatrzymany pomy\u015blnie INFO_CTRL_PANEL_CONFIRMATION_EXPORT_LDIF_DETAILS=File '%s' exists and its contents will be overwritten.<br><br>Czy chcesz kontynuowa\u0107? ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=B\u0142\u0105d podczas odczytu post\u0119pu operacji. ERR_ADMINISTRATOR_PWD_DO_NOT_MATCH=Podane has\u0142a r\u00f3\u017cni\u0105 si\u0119. INFO_REMOVE_SCHEMA_AND_CONFIGURATION_LABEL=Pliki Konfiguracyjne i Schematy opendj-server-legacy/src/messages/org/opends/messages/admin_tool_zh_CN.properties
@@ -258,7 +258,7 @@ ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=\u5728\u975e\u4ea4\u4e92\u5f0f\u6a21\u5f0f\u4e2d\u5fc5\u987b\u63d0\u4f9b\u5168\u5c40\u7ba1\u7406\u5458\u5bc6\u7801\u3002\u53ef\u4ee5\u4f7f\u7528 %s \u6216 %s \u9009\u9879\u63d0\u4f9b\u3002 ERR_REPLICATION_NOT_A_VALID_BASEDN=\u63d0\u4f9b\u7684\u503c %s \u4e0d\u662f\u6709\u6548\u7684\u57fa DN\u3002 ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=\u5fc5\u987b\u63d0\u4f9b\u4e24\u4e2a\u4e0d\u540c\u7684\u670d\u52a1\u5668\u624d\u80fd\u542f\u7528\u590d\u5236\u3002\u5df2\u63d0\u4f9b\u4e24\u6b21\u670d\u52a1\u5668 %s:%s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=\u5fc5\u987b\u63d0\u4f9b\u4e24\u4e2a\u4e0d\u540c\u7684\u670d\u52a1\u5668\u4f5c\u4e3a\u521d\u59cb\u5316\u7684\u6e90\u548c\u76ee\u7684\u5730\u3002\u5df2\u63d0\u4f9b\u4e24\u6b21\u670d\u52a1\u5668 %s:%s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=\u5fc5\u987b\u63d0\u4f9b\u4e24\u4e2a\u4e0d\u540c\u7684\u670d\u52a1\u5668\u4f5c\u4e3a\u521d\u59cb\u5316\u7684\u6e90\u548c\u76ee\u7684\u5730\u3002\u5df2\u63d0\u4f9b\u4e24\u6b21\u670d\u52a1\u5668 %s:%s ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL=\u5728\u4e3b\u673a %s \u4e2d\u670d\u52a1\u5668\u7ba1\u7406\u7aef\u53e3\u548c\u590d\u5236\u7aef\u53e3\u7684\u503c\u76f8\u540c\u3002\u60a8\u4e3a\u8fd9\u4e24\u4e2a\u7aef\u53e3\u63d0\u4f9b %s\u3002 ERR_REPLICATION_SAME_REPLICATION_PORT=\u60a8\u5df2\u7ecf\u4e3a\u4f4d\u4e8e\u76f8\u540c\u673a\u5668 (%s) \u4e0a\u7684\u4e24\u4e2a\u670d\u52a1\u5668\u63d0\u4f9b\u4e86\u76f8\u540c\u7684\u590d\u5236\u7aef\u53e3 (%s)\u3002 ERR_REPLICATION_VALID_SUBCOMMAND_NOT_FOUND=\u627e\u4e0d\u5230\u6709\u6548\u7684\u5b50\u547d\u4ee4\u3002\u4f7f\u7528\u9009\u9879 %s \u65f6\u5fc5\u987b\u6307\u5b9a\u5b50\u547d\u4ee4\u3002 @@ -284,8 +284,8 @@ INFO_REPLICATION_ENABLE_REPLICATION_DOMAIN2_PROMPT=\u6b64\u670d\u52a1\u5668\u662f\u5426\u4f1a\u5305\u542b\u5c06\u88ab\u590d\u5236\u7684\u6570\u636e\uff1f INFO_REPLICATION_ENABLE_REPLICATIONPORT2_PROMPT=\u7b2c\u4e8c\u4e2a\u670d\u52a1\u5668\u7684\u590d\u5236\u7aef\u53e3\uff08\u5fc5\u987b\u662f\u53ef\u7528\u7684\u7aef\u53e3\uff09 INFO_REPLICATION_ENABLE_SECURE2_PROMPT=\u5728\u8fde\u63a5\u5230\u7b2c\u4e8c\u4e2a\u670d\u52a1\u5668\u4e0a\u7684\u590d\u5236\u7aef\u53e3 %s \u65f6\uff0c\u662f\u5426\u5e0c\u671b\u590d\u5236\u4f7f\u7528\u52a0\u5bc6\u901a\u4fe1\uff1f INFO_REPLICATION_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> \u4e3a\u6e90\u670d\u52a1\u5668\u6307\u5b9a\u670d\u52a1\u5668\u7ba1\u7406\u8fde\u63a5\u53c2\u6570 INFO_REPLICATION_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> \u4e3a\u76ee\u6807\u670d\u52a1\u5668\u6307\u5b9a\u670d\u52a1\u5668\u7ba1\u7406\u8fde\u63a5\u53c2\u6570 INFO_INITIALIZE_SOURCE_CONNECTION_PARAMETERS=>>>> \u4e3a\u6e90\u670d\u52a1\u5668\u6307\u5b9a\u670d\u52a1\u5668\u7ba1\u7406\u8fde\u63a5\u53c2\u6570 INFO_INITIALIZE_DESTINATION_CONNECTION_PARAMETERS=>>>> \u4e3a\u76ee\u6807\u670d\u52a1\u5668\u6307\u5b9a\u670d\u52a1\u5668\u7ba1\u7406\u8fde\u63a5\u53c2\u6570 ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION=\u6ca1\u6709\u7528\u4e8e\u542f\u7528\u4e24\u4e2a\u670d\u52a1\u5668\u4e4b\u95f4\u590d\u5236\u7684\u53ef\u7528\u57fa DN\u3002 ERR_NO_SUFFIXES_AVAILABLE_TO_ENABLE_REPLICATION_NO_DOMAIN=\u6ca1\u6709\u7528\u4e8e\u542f\u7528\u4e24\u4e2a\u670d\u52a1\u5668\u4e4b\u95f4\u590d\u5236\u7684\u53ef\u7528\u57fa DN\u3002\u5728\u914d\u7f6e\u4ec5\u5305\u542b\u590d\u5236\u66f4\u6539\u65e5\u5fd7\uff08\u590d\u5236\u670d\u52a1\u5668\uff09\u7684\u670d\u52a1\u5668\u4e4b\u524d\uff0c\u5fc5\u987b\u6307\u5b9a\u81f3\u5c11\u4e00\u4e2a\u5305\u542b\u590d\u5236\u6570\u636e\u7684\u670d\u52a1\u5668\u3002 INFO_ALREADY_REPLICATED_SUFFIXES=\u5df2\u5728\u4e24\u4e2a\u670d\u52a1\u5668\u4e4b\u95f4\u590d\u5236\u4e86\u4ee5\u4e0b\u57fa DN:%n%s @@ -386,12 +386,11 @@ INFO_PROGRESS_POST_EXTERNAL_INITIALIZATION=\u6b63\u5728\u66f4\u65b0\u6709\u5173\u57fa DN %s \u7684\u590d\u5236\u4fe1\u606f INFO_PROGRESS_PRE_INITIALIZATION_FINISHED_PROCEDURE=\u63a5\u4e0b\u6765\uff0c\u60a8\u53ef\u4ee5\u7ee7\u7eed\u5bf9\u6240\u6709\u590d\u5236\u670d\u52a1\u5668\u4e0a\u7684\u57fa DN \u5185\u5bb9\u8fdb\u884c\u521d\u59cb\u5316\u3002\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4 import-ldif \u6216\u4e8c\u8fdb\u5236\u590d\u5236\u6765\u6267\u884c\u6b64\u64cd\u4f5c\u3002\u5728\u6bcf\u4e2a\u670d\u52a1\u5668\u4e0a\u5fc5\u987b\u4f7f\u7528\u76f8\u540c\u7684 LDIF \u6587\u4ef6\u6216\u4e8c\u8fdb\u5236\u590d\u5236\u3002%n%n\u5b8c\u6210\u521d\u59cb\u5316\u540e\uff0c\u5fc5\u987b\u4f7f\u7528\u5b50\u547d\u4ee4 '%s'\uff0c\u4ee5\u4fbf\u590d\u5236\u4f7f\u7528\u65b0\u7684\u57fa DN \u5185\u5bb9\u3002 INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=\u5df2\u6210\u529f\u5b8c\u6210\u540e\u521d\u59cb\u5316\u8fc7\u7a0b\u3002 ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=\u8bfb\u53d6\u64cd\u4f5c\u8fdb\u5ea6\u65f6\u51fa\u9519\u3002 ERR_POOLING_POST_EXTERNAL_INITIALIZATION=\u8bfb\u53d6\u64cd\u4f5c\u8fdb\u5ea6\u65f6\u51fa\u9519\u3002 ERR_READING_SERVER_TASK_PROGRESS=\u8bfb\u53d6\u64cd\u4f5c\u8fdb\u5ea6\u65f6\u51fa\u9519\u3002 INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=\u6267\u884c\u64cd\u4f5c\u671f\u95f4\u51fa\u73b0\u610f\u5916\u9519\u8bef\u3002\u4efb\u52a1\u72b6\u6001: %s\u3002\u8bf7\u67e5\u770b %s \u7684\u9519\u8bef\u65e5\u5fd7\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002 INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=\u6267\u884c\u64cd\u4f5c\u671f\u95f4\u51fa\u73b0\u610f\u5916\u9519\u8bef\u3002\u6700\u65b0\u65e5\u5fd7\u7684\u8be6\u7ec6\u4fe1\u606f: %s\u3002\u4efb\u52a1\u72b6\u6001: %s\u3002\u8bf7\u67e5\u770b %s \u7684\u9519\u8bef\u65e5\u5fd7\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002 INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=\u6267\u884c\u64cd\u4f5c\u671f\u95f4\u51fa\u73b0\u610f\u5916\u9519\u8bef\u3002\u4efb\u52a1\u72b6\u6001: %s\u3002\u8bf7\u67e5\u770b %s \u7684\u9519\u8bef\u65e5\u5fd7\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002 INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=\u6267\u884c\u64cd\u4f5c\u671f\u95f4\u51fa\u73b0\u610f\u5916\u9519\u8bef\u3002\u6700\u65b0\u65e5\u5fd7\u7684\u8be6\u7ec6\u4fe1\u606f: %s\u3002\u4efb\u52a1\u72b6\u6001: %s\u3002\u8bf7\u67e5\u770b %s \u7684\u9519\u8bef\u65e5\u5fd7\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002 ERR_UNEXPECTED_DURING_TASK_NO_LOG=\u6267\u884c\u64cd\u4f5c\u671f\u95f4\u51fa\u73b0\u610f\u5916\u9519\u8bef\u3002\u4efb\u52a1\u72b6\u6001: %s\u3002\u8bf7\u67e5\u770b %s \u7684\u9519\u8bef\u65e5\u5fd7\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002 ERR_UNEXPECTED_DURING_TASK_WITH_LOG=\u6267\u884c\u64cd\u4f5c\u671f\u95f4\u51fa\u73b0\u610f\u5916\u9519\u8bef\u3002\u6700\u65b0\u65e5\u5fd7\u7684\u8be6\u7ec6\u4fe1\u606f: %s\u3002\u4efb\u52a1\u72b6\u6001: %s\u3002\u8bf7\u67e5\u770b %s \u7684\u9519\u8bef\u65e5\u5fd7\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002 ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=\u542f\u52a8\u64cd\u4f5c\u65f6\u51fa\u9519\u3002 ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION=\u542f\u52a8\u64cd\u4f5c\u65f6\u51fa\u9519\u3002 INFO_REPLICATION_SUBCOMMAND_PROMPT=\u60a8\u8981\u6267\u884c\u54ea\u4e9b\u64cd\u4f5c\uff1f opendj-server-legacy/src/messages/org/opends/messages/admin_tool_zh_TW.properties
@@ -206,7 +206,7 @@ ERR_REPLICATION_NO_ADMINISTRATOR_PASSWORD_PROVIDED=\u60a8\u5fc5\u9808\u5728\u975e\u4e92\u52d5\u6a21\u5f0f\u4e2d\u63d0\u4f9b\u5168\u57df\u7ba1\u7406\u54e1\u7684\u5bc6\u78bc\u3002\u60a8\u53ef\u4ee5\u4f7f\u7528 %s \u6216 %s \u9078\u9805\u52a0\u4ee5\u63d0\u4f9b\u3002 ERR_REPLICATION_NOT_A_VALID_BASEDN=\u63d0\u4f9b\u7684\u503c %s \u4e0d\u662f\u6709\u6548\u7684\u57fa\u5e95 DN\u3002 ERR_REPLICATION_ENABLE_SAME_SERVER_PORT=\u60a8\u5fc5\u9808\u63d0\u4f9b\u5169\u500b\u4e0d\u540c\u7684\u4f3a\u670d\u5668\u4ee5\u555f\u7528\u8907\u88fd\u3002\u60a8\u5df2\u63d0\u4f9b\u5169\u6b21\u4f3a\u670d\u5668 %s:%s ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT=\u60a8\u5fc5\u9808\u63d0\u4f9b\u5169\u500b\u4e0d\u540c\u7684\u4f3a\u670d\u5668\u505a\u70ba\u521d\u59cb\u5316\u7684\u4f86\u6e90\u548c\u76ee\u6a19\u3002\u60a8\u5df2\u63d0\u4f9b\u5169\u6b21\u4f3a\u670d\u5668 %s:%s ERR_SOURCE_DESTINATION_INITIALIZE_SAME_SERVER_PORT=\u60a8\u5fc5\u9808\u63d0\u4f9b\u5169\u500b\u4e0d\u540c\u7684\u4f3a\u670d\u5668\u505a\u70ba\u521d\u59cb\u5316\u7684\u4f86\u6e90\u548c\u76ee\u6a19\u3002\u60a8\u5df2\u63d0\u4f9b\u5169\u6b21\u4f3a\u670d\u5668 %s:%s ERR_REPLICATION_SAME_REPLICATION_PORT=\u60a8\u70ba\u5169\u90e8\u4f4d\u65bc\u76f8\u540c\u96fb\u8166 (%2$s) \u4e0a\u7684\u4f3a\u670d\u5668\u63d0\u4f9b\u4e86\u76f8\u540c\u7684\u8907\u88fd\u9023\u63a5\u57e0 (%1$s)\u3002 ERR_REPLICATION_VALID_SUBCOMMAND_NOT_FOUND=\u627e\u4e0d\u5230\u6709\u6548\u7684\u5b50\u6307\u4ee4\u3002\u4f7f\u7528\u9078\u9805 %s \u6642\uff0c\u60a8\u5fc5\u9808\u6307\u5b9a\u5b50\u6307\u4ee4\u3002 ERR_REPLICATION_STATUS_QUIET=\u300c%s\u300d\u5b50\u6307\u4ee4\u8207 %s \u5f15\u6578\u4e0d\u76f8\u5bb9\u3002 @@ -270,12 +270,11 @@ INFO_PROGRESS_PRE_EXTERNAL_INITIALIZATION=\u6b63\u5728\u6e96\u5099\u5916\u90e8\u521d\u59cb\u5316\u57fa\u5e95 DN %s INFO_PROGRESS_POST_EXTERNAL_INITIALIZATION=\u6b63\u5728\u66f4\u65b0\u57fa\u5e95 DN %s \u4e0a\u7684\u8907\u88fd\u8cc7\u8a0a INFO_PROGRESS_POST_INITIALIZATION_FINISHED_PROCEDURE=\u5df2\u6210\u529f\u5b8c\u6210\u5f8c\u7f6e\u521d\u59cb\u5316\u7a0b\u5e8f\u3002 ERR_POOLING_PRE_EXTERNAL_INITIALIZATION=\u8b80\u53d6\u4f5c\u696d\u9032\u5ea6\u6642\u767c\u751f\u932f\u8aa4\u3002 ERR_POOLING_POST_EXTERNAL_INITIALIZATION=\u8b80\u53d6\u4f5c\u696d\u9032\u5ea6\u6642\u767c\u751f\u932f\u8aa4\u3002 ERR_READING_SERVER_TASK_PROGRESS=\u8b80\u53d6\u4f5c\u696d\u9032\u5ea6\u6642\u767c\u751f\u932f\u8aa4\u3002 INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_NO_LOG=\u4f5c\u696d\u671f\u9593\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002\u4f5c\u696d\u72c0\u614b: %s\u3002\u5982\u9700\u66f4\u591a\u8cc7\u8a0a\uff0c\u8acb\u6aa2\u67e5 %s \u7684\u932f\u8aa4\u8a18\u9304\u3002 INFO_ERROR_DURING_PRE_EXTERNAL_INITIALIZATION_LOG=\u4f5c\u696d\u671f\u9593\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002\u6700\u65b0\u8a18\u9304\u8a73\u7d30\u8cc7\u8a0a: %s\u3002\u4f5c\u696d\u72c0\u614b: %s\u3002\u5982\u9700\u66f4\u591a\u8cc7\u8a0a\uff0c\u8acb\u6aa2\u67e5 %s \u7684\u932f\u8aa4\u8a18\u9304\u3002 INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_NO_LOG=\u4f5c\u696d\u671f\u9593\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002\u4f5c\u696d\u72c0\u614b: %s\u3002\u5982\u9700\u66f4\u591a\u8cc7\u8a0a\uff0c\u8acb\u6aa2\u67e5 %s \u7684\u932f\u8aa4\u8a18\u9304\u3002 INFO_ERROR_DURING_POST_EXTERNAL_INITIALIZATION_LOG=\u4f5c\u696d\u671f\u9593\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002\u6700\u65b0\u8a18\u9304\u8a73\u7d30\u8cc7\u8a0a: %s\u3002\u4f5c\u696d\u72c0\u614b: %s\u3002\u5982\u9700\u66f4\u591a\u8cc7\u8a0a\uff0c\u8acb\u6aa2\u67e5 %s \u7684\u932f\u8aa4\u8a18\u9304\u3002 ERR_UNEXPECTED_DURING_TASK_NO_LOG=\u4f5c\u696d\u671f\u9593\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002\u4f5c\u696d\u72c0\u614b: %s\u3002\u5982\u9700\u66f4\u591a\u8cc7\u8a0a\uff0c\u8acb\u6aa2\u67e5 %s \u7684\u932f\u8aa4\u8a18\u9304\u3002 ERR_UNEXPECTED_DURING_TASK_WITH_LOG=\u4f5c\u696d\u671f\u9593\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002\u6700\u65b0\u8a18\u9304\u8a73\u7d30\u8cc7\u8a0a: %s\u3002\u4f5c\u696d\u72c0\u614b: %s\u3002\u5982\u9700\u66f4\u591a\u8cc7\u8a0a\uff0c\u8acb\u6aa2\u67e5 %s \u7684\u932f\u8aa4\u8a18\u9304\u3002 ERR_LAUNCHING_PRE_EXTERNAL_INITIALIZATION=\u555f\u52d5\u4f5c\u696d\u6642\u767c\u751f\u932f\u8aa4\u3002 ERR_LAUNCHING_POST_EXTERNAL_INITIALIZATION=\u555f\u52d5\u4f5c\u696d\u6642\u767c\u751f\u932f\u8aa4\u3002 INFO_REPLICATION_SUBCOMMAND_PROMPT=\u60a8\u60f3\u8981\u505a\u4ec0\u9ebc\uff1f opendj-server-legacy/src/messages/org/opends/messages/tool.properties
@@ -2610,6 +2610,7 @@ INFO_DESCRIPTION_BACKEND_TOOL_1893=This utility can be used to debug a backend INFO_INDEX_NAME_PLACEHOLDER_1894={indexName} INFO_DESCRIPTION_BACKEND_DEBUG_RAW_DB_NAME_1895=The raw database name INFO_CHANGE_NUMBER_PLACEHOLDER_1896={change number} # Upgrade tasks INFO_UPGRADE_TASK_6869_SUMMARY_10000=Fixing de-DE collation matching rule OID