| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Portions Copyright 2013-2015 ForgeRock AS |
| | | * Portions Copyright 2013-2016 ForgeRock AS |
| | | */ |
| | | package org.opends.server.tools.upgrade; |
| | | |
| | |
| | | import org.forgerock.opendj.ldap.requests.Requests; |
| | | import org.forgerock.opendj.ldap.requests.SearchRequest; |
| | | import org.forgerock.opendj.ldif.EntryReader; |
| | | import org.forgerock.util.Utils; |
| | | import org.opends.server.backends.pluggable.spi.TreeName; |
| | | import org.opends.server.tools.JavaPropertiesTool; |
| | | import org.opends.server.tools.RebuildIndex; |
| | |
| | | import com.sleepycat.je.Transaction; |
| | | import com.sleepycat.je.TransactionConfig; |
| | | |
| | | /** |
| | | * Factory methods for create new upgrade tasks. |
| | | */ |
| | | /** Factory methods for create new upgrade tasks. */ |
| | | public final class UpgradeTasks |
| | | { |
| | | /** Logger for the upgrade. */ |
| | |
| | | schemaFileTemplate.getName(), e.getMessage()), pnc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_REPLACE_SCHEMA_FILE.get(fileName).toString(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | configFile.getName(), e.getMessage()), pnc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_ADD_CONFIG_FILE.get(fileName).toString(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | schemaFileTemplate.getName(), e.getMessage()), pnc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return String.valueOf(summary); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | schemaFileTemplate.getName(), e.getMessage()), pnc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return String.valueOf(summary); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | throw new ClientException(ReturnCode.ERROR_UNEXPECTED, ERR_UPGRADE_DSJAVAPROPERTIES_FAILED.get()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return String.valueOf(summary); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | { |
| | | return context.getFromVersion().compareTo(version) >= 0; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return "Regression in version \"" + versionString + "\""; |
| | | } |
| | | }, tasks); |
| | | } |
| | | |
| | |
| | | { |
| | | return context.confirmYN(INFO_UPGRADE_TASK_NEEDS_USER_CONFIRM.get(message), defaultResponse) == YES; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_NEEDS_USER_CONFIRM.get(message).toString(); |
| | | } |
| | | }, tasks); |
| | | } |
| | | |
| | | /** Determines whether conditional tasks should be performed. */ |
| | | interface UpgradeCondition |
| | | { |
| | | boolean shouldPerformUpgradeTasks(final UpgradeContext context) throws ClientException; |
| | | boolean shouldPerformUpgradeTasks(UpgradeContext context) throws ClientException; |
| | | } |
| | | |
| | | static UpgradeTask conditionalUpgradeTasks(final UpgradeCondition condition, final UpgradeTask... tasks) |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | final StringBuilder sb = new StringBuilder(); |
| | | sb.append(condition).append(" = ").append(shouldPerformUpgradeTasks).append('\n'); |
| | | sb.append('['); |
| | | Utils.joinAsString(sb, "\n", (Object[]) tasks); |
| | | sb.append(']'); |
| | | return sb.toString(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | { |
| | | return new AbstractUpgradeTask() |
| | | { |
| | | private boolean isATaskToPerform = false; |
| | | private boolean isATaskToPerform; |
| | | |
| | | @Override |
| | | public void prepare(UpgradeContext context) throws ClientException |
| | |
| | | { |
| | | context.notify(INFO_UPGRADE_ALL_REBUILD_INDEX_DECLINED.get(), TextOutputCallback.WARNING); |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return String.valueOf(summary); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a rebuild index task for a given single index. As this task is |
| | | * possibly lengthy, it's considered as a post upgrade task. This task is not |
| | |
| | | { |
| | | return new AbstractUpgradeTask() |
| | | { |
| | | private boolean isATaskToPerform = false; |
| | | private boolean isATaskToPerform; |
| | | |
| | | @Override |
| | | public void prepare(UpgradeContext context) throws ClientException |
| | |
| | | context.notify(INFO_UPGRADE_REBUILD_INDEX_DECLINED.get(index), TextOutputCallback.WARNING); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return String.valueOf(summary); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | * upgrade log file. |
| | | */ |
| | | final List<String> backends = UpgradeUtils.getIndexedBackendsFromConfig(); |
| | | if (!backends.isEmpty()) |
| | | { |
| | | for (final String be : backends) |
| | | { |
| | | args.add("-b"); |
| | | args.add(be); |
| | | } |
| | | |
| | | // Displays info about command line args for log only. |
| | | logger.debug(INFO_UPGRADE_REBUILD_INDEX_ARGUMENTS, args); |
| | | |
| | | /* |
| | | * The rebuild-index process just display a status ok / fails. The |
| | | * logger stream contains all the log linked to this process. The |
| | | * complete process is not displayed in the upgrade console. |
| | | */ |
| | | final String[] commandLineArgs = args.toArray(new String[args.size()]); |
| | | final int result = new RebuildIndex().rebuildIndexesWithinMultipleBackends( |
| | | true, UpgradeLog.getPrintStream(), commandLineArgs); |
| | | |
| | | if (result == 0) |
| | | { |
| | | logger.debug(INFO_UPGRADE_REBUILD_INDEX_ENDS); |
| | | context.notifyProgress(pnc.setProgress(100)); |
| | | } |
| | | else |
| | | { |
| | | final LocalizableMessage msg = ERR_UPGRADE_PERFORMING_POST_TASKS_FAIL.get(); |
| | | context.notifyProgress(pnc.setProgress(-100)); |
| | | throw new ClientException(ReturnCode.ERROR_UNEXPECTED, msg); |
| | | } |
| | | } |
| | | else |
| | | if (backends.isEmpty()) |
| | | { |
| | | logger.debug(INFO_UPGRADE_REBUILD_INDEX_NO_BACKEND_FOUND); |
| | | logger.debug(INFO_UPGRADE_REBUILD_INDEX_DECLINED, indexesToRebuild); |
| | | context.notifyProgress(pnc.setProgress(100)); |
| | | return; |
| | | } |
| | | |
| | | for (final String be : backends) |
| | | { |
| | | args.add("-b"); |
| | | args.add(be); |
| | | } |
| | | |
| | | // Displays info about command line args for log only. |
| | | logger.debug(INFO_UPGRADE_REBUILD_INDEX_ARGUMENTS, args); |
| | | |
| | | /* |
| | | * The rebuild-index process just display a status ok / fails. The |
| | | * logger stream contains all the log linked to this process. The |
| | | * complete process is not displayed in the upgrade console. |
| | | */ |
| | | final String[] commandLineArgs = args.toArray(new String[args.size()]); |
| | | final int result = new RebuildIndex().rebuildIndexesWithinMultipleBackends( |
| | | true, UpgradeLog.getPrintStream(), commandLineArgs); |
| | | |
| | | if (result == 0) |
| | | { |
| | | logger.debug(INFO_UPGRADE_REBUILD_INDEX_ENDS); |
| | | context.notifyProgress(pnc.setProgress(100)); |
| | | } |
| | | else |
| | | { |
| | | final LocalizableMessage msg = ERR_UPGRADE_PERFORMING_POST_TASKS_FAIL.get(); |
| | | context.notifyProgress(pnc.setProgress(-100)); |
| | | throw new ClientException(ReturnCode.ERROR_UNEXPECTED, msg); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return "Post upgrade rebuild indexes task"; |
| | | } |
| | | }; |
| | | } |
| | |
| | | |
| | | try |
| | | { |
| | | String toRevision = String.valueOf(context.getToVersion().getRevision()); |
| | | String toRevision = context.getToVersion().getRevision(); |
| | | updateConfigUpgradeSchemaFile(configSchemaDirectory, toRevision); |
| | | |
| | | context.notifyProgress(pnc.setProgress(100)); |
| | |
| | | manageTaskException(context, ERR_UPGRADE_CONFIG_ERROR_UPGRADE_FOLDER.get(ex.getMessage()), pnc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_REFRESH_UPGRADE_DIRECTORY.get().toString(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return String.valueOf(summary); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | manageTaskException(context, LocalizableMessage.raw(e.getMessage()), pnc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_DELETE_FILE.get(file).toString(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | builder.append("_id2entry"); |
| | | return builder.toString(); |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_MIGRATE_JE_SUMMARY_1.get("%s").toString(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | { |
| | | return new AbstractUpgradeTask() |
| | | { |
| | | private boolean reimportRequired = false; |
| | | private boolean reimportRequired; |
| | | |
| | | @Override |
| | | public void perform(UpgradeContext context) throws ClientException |
| | |
| | | context.notify(INFO_UPGRADE_TASK_RENAME_JE_DB_DIR_WARNING.get(), TextOutputCallback.WARNING); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_RENAME_JE_DB_DIR.get("%s", "%s").toString(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | { |
| | | performConfigFileUpdate(summary, filter, changeOperationType, context, ldif); |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return String.valueOf(summary); |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | manageTaskException(context, LocalizableMessage.raw(e.getLocalizedMessage()), pnc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return INFO_UPGRADE_TASK_DELETE_CHANGELOG_SUMMARY.get(replicationDbDir).toString(); |
| | | } |
| | | }; |
| | | } |
| | | |