From a1c05a12054b831b0aead0bd5eac9c6bdac6a655 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Tue, 17 Nov 2015 17:27:16 +0000
Subject: [PATCH] OPENDJ-2364 PR-148 Change backend type during upgrade
---
opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java | 184 +++++++++++++++++++++++++++++++++++++--------
1 files changed, 149 insertions(+), 35 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java
index 22fbcef..1a50c3e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java
@@ -51,7 +51,9 @@
import static org.opends.server.tools.upgrade.FormattedNotificationCallback.*;
import static org.opends.server.tools.upgrade.LicenseFile.*;
import static org.opends.server.tools.upgrade.UpgradeTasks.*;
-import static org.opends.server.tools.upgrade.UpgradeUtils.*;
+import static org.opends.server.tools.upgrade.UpgradeUtils.batDirectory;
+import static org.opends.server.tools.upgrade.UpgradeUtils.binDirectory;
+import static org.opends.server.tools.upgrade.UpgradeUtils.libDirectory;
import static org.opends.server.util.StaticUtils.*;
/**
@@ -179,7 +181,7 @@
"ds-cfg-strict-format: false"));
register("2.5.0",
- requireConfirmation(INFO_UPGRADE_TASK_8214_DESCRIPTION.get(),
+ requireConfirmation(INFO_UPGRADE_TASK_8214_DESCRIPTION.get(), YES,
modifyConfigEntry(INFO_UPGRADE_TASK_8214_SUMMARY.get(),
"(ds-cfg-java-class=org.opends.server.extensions.IsMemberOfVirtualAttributeProvider)",
"add: ds-cfg-filter",
@@ -403,39 +405,151 @@
register("2.7.0",
rerunJavaPropertiesTool(INFO_UPGRADE_TASK_9206_SUMMARY.get()));
+ /** If the upgraded version is a non OEM one, migrates local-db backends to JE Backend, see OPENDJ-2364 **/
register("3.0.0",
- migrateLocalDBBackendsToJEBackends(),
- modifyConfigEntry(INFO_UPGRADE_TASK_MIGRATE_JE_SUMMARY_2.get(),
- "(objectClass=ds-cfg-local-db-backend)",
- "replace: objectClass",
- "objectClass: top",
- "objectClass: ds-cfg-backend",
- "objectClass: ds-cfg-pluggable-backend",
- "objectClass: ds-cfg-je-backend",
- "-",
- "replace: ds-cfg-java-class",
- "ds-cfg-java-class: org.opends.server.backends.jeb.JEBackend",
- "-",
- "delete: ds-cfg-import-thread-count",
- "-",
- "delete: ds-cfg-import-queue-size",
- "-",
- "delete: ds-cfg-subordinate-indexes-enabled",
- "-"),
- modifyConfigEntry(INFO_UPGRADE_TASK_MIGRATE_JE_SUMMARY_3.get(),
- "(objectClass=ds-cfg-local-db-index)",
- "replace: objectClass",
- "objectClass: top",
- "objectClass: ds-cfg-backend-index",
- "-"),
- modifyConfigEntry(INFO_UPGRADE_TASK_MIGRATE_JE_SUMMARY_4.get(),
- "(objectClass=ds-cfg-local-db-vlv-index)",
- "replace: objectClass",
- "objectClass: top",
- "objectClass: ds-cfg-backend-vlv-index",
- "-",
- "delete: ds-cfg-max-block-size",
- "-"));
+ conditionalUpgradeTasks(
+ new UpgradeCondition() {
+ @Override
+ public boolean shouldPerformUpgradeTasks(UpgradeContext context) throws ClientException {
+ return !isOEMVersion();
+ }
+ },
+ migrateLocalDBBackendsToJEBackends(),
+ modifyConfigEntry(INFO_UPGRADE_TASK_MIGRATE_JE_SUMMARY_2.get(),
+ "(objectClass=ds-cfg-local-db-backend)",
+ "replace: objectClass",
+ "objectClass: top",
+ "objectClass: ds-cfg-backend",
+ "objectClass: ds-cfg-pluggable-backend",
+ "objectClass: ds-cfg-je-backend",
+ "-",
+ "replace: ds-cfg-java-class",
+ "ds-cfg-java-class: org.opends.server.backends.jeb.JEBackend",
+ "-",
+ "delete: ds-cfg-import-thread-count",
+ "-",
+ "delete: ds-cfg-import-queue-size",
+ "-",
+ "delete: ds-cfg-subordinate-indexes-enabled",
+ "-"
+ ),
+ modifyConfigEntry(INFO_UPGRADE_TASK_MIGRATE_JE_SUMMARY_3.get(),
+ "(objectClass=ds-cfg-local-db-index)",
+ "replace: objectClass",
+ "objectClass: top",
+ "objectClass: ds-cfg-backend-index",
+ "-"
+ ),
+ modifyConfigEntry(INFO_UPGRADE_TASK_MIGRATE_JE_SUMMARY_4.get(),
+ "(objectClass=ds-cfg-local-db-vlv-index)",
+ "replace: objectClass",
+ "objectClass: top",
+ "objectClass: ds-cfg-backend-vlv-index",
+ "-",
+ "delete: ds-cfg-max-block-size",
+ "-"
+ )
+ )
+ );
+
+ /** If the upgraded version is OEM, migrates local-db backends to PDB, see OPENDJ-2364 **/
+ register("3.0.0",
+ conditionalUpgradeTasks(
+ new UpgradeCondition() {
+ @Override
+ public boolean shouldPerformUpgradeTasks(UpgradeContext context) throws ClientException {
+ return isOEMVersion();
+ }
+ },
+ deleteFile(new File(libDirectory, "je.jar")),
+ requireConfirmation(INFO_UPGRADE_TASK_LOCAL_DB_TO_PDB_1_SUMMARY.get(), NO,
+ renameLocalDBBackendDirectories(),
+ // Convert JE backends to PDB backends.
+ modifyConfigEntry(INFO_UPGRADE_TASK_LOCAL_DB_TO_PDB_2_SUMMARY.get(),
+ "(objectclass=ds-cfg-local-db-backend)",
+ "delete: objectclass",
+ "objectclass: ds-cfg-local-db-backend",
+ "-",
+ "add: objectclass",
+ "objectclass: ds-cfg-pluggable-backend",
+ "objectclass: ds-cfg-pdb-backend",
+ "-",
+ "replace: ds-cfg-java-class",
+ "ds-cfg-java-class: org.opends.server.backends.pdb.PDBBackend",
+ "-",
+ "delete: ds-cfg-preload-time-limit",
+ "-",
+ "delete: ds-cfg-import-thread-count",
+ "-",
+ "delete: ds-cfg-import-queue-size",
+ "-",
+ "delete: ds-cfg-db-txn-write-no-sync",
+ "-",
+ "delete: ds-cfg-db-run-cleaner",
+ "-",
+ "delete: ds-cfg-db-cleaner-min-utilization",
+ "-",
+ "delete: ds-cfg-db-evictor-lru-only",
+ "-",
+ "delete: ds-cfg-db-evictor-core-threads",
+ "-",
+ "delete: ds-cfg-db-evictor-max-threads",
+ "-",
+ "delete: ds-cfg-db-evictor-keep-alive",
+ "-",
+ "delete: ds-cfg-db-evictor-nodes-per-scan",
+ "-",
+ "delete: ds-cfg-db-log-file-max",
+ "-",
+ "delete: ds-cfg-db-log-filecache-size",
+ "-",
+ "delete: ds-cfg-db-logging-file-handler-on",
+ "-",
+ "delete: ds-cfg-db-logging-level",
+ "-",
+ "delete: ds-cfg-db-checkpointer-bytes-interval",
+ "-",
+ "delete: ds-cfg-db-checkpointer-wakeup-interval",
+ "-",
+ "delete: ds-cfg-db-num-lock-tables",
+ "-",
+ "delete: ds-cfg-db-num-cleaner-threads",
+ "-",
+ "delete: ds-cfg-je-property",
+ "-",
+ "delete: ds-cfg-subordinate-indexes-enabled",
+ "-"
+ ),
+ // Convert JE backend indexes to PDB backend indexes.
+ modifyConfigEntry(INFO_UPGRADE_TASK_LOCAL_DB_TO_PDB_3_SUMMARY.get(),
+ "(objectclass=ds-cfg-local-db-index)",
+ "delete: objectclass",
+ "objectclass: ds-cfg-local-db-index",
+ "-",
+ "add: objectclass",
+ "objectclass: ds-cfg-backend-index",
+ "-"
+ ),
+ // Convert JE backend VLV indexes to PDB backend VLV indexes.
+ modifyConfigEntry(INFO_UPGRADE_TASK_LOCAL_DB_TO_PDB_4_SUMMARY.get(),
+ "(objectclass=ds-cfg-local-db-vlv-index)",
+ "delete: objectclass",
+ "objectclass: ds-cfg-local-db-vlv-index",
+ "-",
+ "add: objectclass",
+ "objectclass: ds-cfg-backend-vlv-index",
+ "-",
+ "delete: ds-cfg-max-block-size",
+ "-"
+ )
+ )
+ )
+ );
+
+ /** Remove dbtest tool (replaced by backendstat in 3.0.0) - see OPENDJ-1791 **/
+ register("3.0.0",
+ deleteFile(new File(binDirectory, "dbtest")),
+ deleteFile(new File(batDirectory, "dbtest.bat")));
/**
* Rebuild all indexes when upgrading to 3.0.0.
@@ -444,7 +558,7 @@
* 2) JE backend has been migrated to pluggable architecture.
*/
register("3.0.0",
- rebuildAllIndexes(INFO_UPGRADE_TASK_11260_SUMMARY.get()));
+ rebuildAllIndexes(INFO_UPGRADE_TASK_11260_SUMMARY.get()));
/** See OPENDJ-1742 */
register("3.0.0",
--
Gitblit v1.10.0