From d48536f1cf5e4b6714122fc0d85a5e77bf731346 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Wed, 16 Mar 2016 11:41:09 +0000
Subject: [PATCH] OPENDJ-2730 Fix upgrade on case insensitive file systems
---
opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java | 48 +++++++++++++++++++++++++++++++++++++++---------
1 files changed, 39 insertions(+), 9 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
index 53bd46c..8761918 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
@@ -563,7 +563,7 @@
@Override
public void prepare(UpgradeContext context) throws ClientException
{
- Upgrade.setHasPostUpgradeTask(true);
+ Upgrade.needToRunPostUpgradePhase();
// Requires answer from the user.
isATaskToPerform = context.confirmYN(summary, NO) == YES;
isRebuildAllIndexesIsPresent = true;
@@ -618,7 +618,7 @@
@Override
public void prepare(UpgradeContext context) throws ClientException
{
- Upgrade.setHasPostUpgradeTask(true);
+ Upgrade.needToRunPostUpgradePhase();
// Requires answer from the user.
isATaskToPerform = context.confirmYN(summary, NO) == YES;
}
@@ -1059,7 +1059,7 @@
{
while (jeBackends.hasNext())
{
- Upgrade.setHasPostUpgradeTask(true);
+ Upgrade.needToRunPostUpgradePhase();
reimportRequired = true;
Entry jeBackend = jeBackends.readEntry();
@@ -1322,6 +1322,7 @@
{
return new AbstractUpgradeTask()
{
+
@Override
public void perform(final UpgradeContext context) throws ClientException
{
@@ -1329,19 +1330,30 @@
INFORMATION, INFO_UPGRADE_TASK_REMOVE_OLD_JARS.get(), 0);
context.notifyProgress(pnc);
+ final boolean fileSystemIsCaseSensitive = fileSystemIsCaseSensitive(context);
+
+ deleteJarFilesIfFileSystemIsCaseSensitive(fileSystemIsCaseSensitive, "OpenDJ");
for (final String locale : SUPPORTED_LOCALES_FOR_3_0_0)
{
- deleteJarFileIfExists("OpenDJ_" + locale);
- deleteJarFileIfExists("OpenDJ-" + locale);
+ deleteJarFiles("OpenDJ-" + locale);
+ deleteJarFilesIfFileSystemIsCaseSensitive(fileSystemIsCaseSensitive, "OpenDJ_" + locale);
}
- deleteJarFileIfExists("OpenDJ",
- // Jar files from 2.6.x
- "jackson-core-asl", "jackson-mapper-asl", "json-fluent", "json-resource-servlet",
+ // Jar files from 2.6.x
+ deleteJarFiles("jackson-core-asl", "jackson-mapper-asl", "json-fluent", "json-resource-servlet",
"mail", "opendj-ldap-sdk", "opendj-rest2ldap-servlet", "opendj-server2x-adapter");
context.notifyProgress(pnc.setProgress(100));
}
- private void deleteJarFileIfExists(final String... jarFileNames)
+ private void deleteJarFilesIfFileSystemIsCaseSensitive(
+ final boolean fileSystemIsCaseSensitive, final String... jarFileNames)
+ {
+ if (fileSystemIsCaseSensitive)
+ {
+ deleteJarFiles(jarFileNames);
+ }
+ }
+
+ private void deleteJarFiles(final String... jarFileNames)
{
for (final String jarFileName : jarFileNames)
{
@@ -1352,6 +1364,24 @@
}
}
}
+
+ /** Used to know if we have to remove old "camel case" OpenDJ[_]*.jar(see OPENDJ-2692). */
+ private boolean fileSystemIsCaseSensitive(final UpgradeContext context) throws ClientException
+ {
+ final File openDJCamelCaseJar = new File(libDirectory, "OpenDJ.jar");
+ try
+ {
+ // getCanonicalPath() will return the new "opendj.jar" on case insensitive file systems
+ return openDJCamelCaseJar.getCanonicalPath().equals(openDJCamelCaseJar.getAbsolutePath());
+ }
+ catch (final IOException unlikely)
+ {
+ // Warn the user that he may have some old camel case jars to remove
+ context.notify(INFO_UPGRADE_TASK_UNABLE_TO_REMOVE_OLD_JARS.get());
+ Upgrade.needToExitWithErrorCode();
+ return false;
+ }
+ }
};
}
--
Gitblit v1.10.0