mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge branch 'feature/RM-6355_OrcaFix' into 'master'
RM-6355 Orca: Won't start with 2.7 installed. See merge request records-management/records-management!1092
This commit is contained in:
@@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
package org.alfresco.module.org_alfresco_module_rm.patch.compatibility;
|
package org.alfresco.module.org_alfresco_module_rm.patch.compatibility;
|
||||||
|
|
||||||
|
import static org.alfresco.repo.module.ModuleVersionNumber.VERSION_ZERO;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.patch.ModulePatchExecuterImpl;
|
import org.alfresco.module.org_alfresco_module_rm.patch.ModulePatchExecuterImpl;
|
||||||
@@ -117,49 +119,63 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
|
|||||||
@Override
|
@Override
|
||||||
protected void executeInternal()
|
protected void executeInternal()
|
||||||
{
|
{
|
||||||
ModuleVersionNumber moduleInstalledVersionNumber = getModuleVersionNumber(REGISTRY_PROPERTY_INSTALLED_VERSION);
|
//Get the new module version
|
||||||
ModuleVersionNumber moduleCurrentVersionNumber = getModuleVersionNumber(REGISTRY_PROPERTY_CURRENT_VERSION);
|
String moduleId = modulePatchExecuter.getModuleId();
|
||||||
|
ModuleVersionNumber moduleNewVersionNumber = moduleService.getModule(moduleId).getModuleVersionNumber();
|
||||||
String moduleName = getName();
|
|
||||||
|
|
||||||
if (isVersionLaterThan(moduleInstalledVersionNumber, moduleCurrentVersionNumber))
|
// Get the module details from the registry
|
||||||
|
ModuleVersionNumber moduleCurrentVersionNumber = getModuleVersionNumber(REGISTRY_PROPERTY_CURRENT_VERSION,
|
||||||
|
moduleId);
|
||||||
|
// Get the module patch component name
|
||||||
|
String moduleName = getName();
|
||||||
|
if (moduleCurrentVersionNumber.equals(VERSION_ZERO) ||
|
||||||
|
moduleCurrentVersionNumber.equals(moduleNewVersionNumber)) // No previous record of it
|
||||||
{
|
{
|
||||||
LOGGER.info("Module patch component '{}' is skipped for upgrade from version {} to version {}",
|
LOGGER.info("Module patch component '{}' is skipped, no previous version found.", moduleName);
|
||||||
moduleName, moduleInstalledVersionNumber, moduleCurrentVersionNumber);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
try
|
if (isVersionLaterThan(moduleCurrentVersionNumber, moduleNewVersionNumber))
|
||||||
{
|
{
|
||||||
LOGGER.info("Module patch component '{}' is executing ...", moduleName);
|
LOGGER.info("Module patch component '{}' is skipped for upgrade from version {} to version {}",
|
||||||
|
moduleName, moduleCurrentVersionNumber, moduleNewVersionNumber);
|
||||||
// execute path within an isolated transaction
|
}
|
||||||
retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
@Override
|
LOGGER.info("Module patch component '{}' is executing ...", moduleName);
|
||||||
public Void execute()
|
|
||||||
|
// execute path within an isolated transaction
|
||||||
|
retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
|
||||||
|
|
||||||
{
|
{
|
||||||
behaviourFilter.disableBehaviour();
|
@Override
|
||||||
try
|
public Void execute()
|
||||||
{
|
{
|
||||||
executePatch();
|
behaviourFilter.disableBehaviour();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
executePatch();
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
behaviourFilter.enableBehaviour();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
behaviourFilter.enableBehaviour();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}, false, true);
|
}, false, true);
|
||||||
|
|
||||||
LOGGER.info(" ... completed module patch '{}'", moduleName);
|
LOGGER.info(" ... completed module patch '{}'", moduleName);
|
||||||
|
|
||||||
} catch (Exception exception)
|
}
|
||||||
{
|
catch (Exception exception)
|
||||||
// record the exception otherwise it gets swallowed
|
{
|
||||||
LOGGER.info(" ... error encountered. {}", exception.getMessage(), exception);
|
// record the exception otherwise it gets swallowed
|
||||||
throw exception;
|
LOGGER.info(" ... error encountered. {}", exception.getMessage(), exception);
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -167,9 +183,8 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
|
|||||||
/**
|
/**
|
||||||
* Helper method to get the ModuleVersionNumber.
|
* Helper method to get the ModuleVersionNumber.
|
||||||
*/
|
*/
|
||||||
private ModuleVersionNumber getModuleVersionNumber(String registryProperty)
|
private ModuleVersionNumber getModuleVersionNumber(String registryProperty, String moduleId)
|
||||||
{
|
{
|
||||||
String moduleId = modulePatchExecuter.getModuleId();
|
|
||||||
RegistryKey moduleKeyVersion = new RegistryKey(ModuleComponentHelper.URI_MODULES_1_0,
|
RegistryKey moduleKeyVersion = new RegistryKey(ModuleComponentHelper.URI_MODULES_1_0,
|
||||||
new String[]{REGISTRY_PATH_MODULES, moduleId, registryProperty});
|
new String[]{REGISTRY_PATH_MODULES, moduleId, registryProperty});
|
||||||
Serializable moduleVersion = this.registryService.getProperty(moduleKeyVersion);
|
Serializable moduleVersion = this.registryService.getProperty(moduleKeyVersion);
|
||||||
@@ -182,22 +197,27 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
|
|||||||
* patches.
|
* patches.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private boolean isVersionLaterThan(ModuleVersionNumber installedModuleVersionNumber,
|
private boolean isVersionLaterThan(ModuleVersionNumber moduleCurrentVersionNumber,
|
||||||
ModuleVersionNumber currentModuleVersionNumber)
|
ModuleVersionNumber moduleNewVersionNumber)
|
||||||
{
|
{
|
||||||
// assume that the v2.0 and v2.1 patches should be run
|
// assume that the v2.0 and v2.1 patches should be run
|
||||||
boolean versionLaterThan = false;
|
boolean versionLaterThan = false;
|
||||||
|
|
||||||
// if this is an upgrade as opposed to a fresh install
|
// if this is an upgrade as opposed to a fresh install
|
||||||
if (installedModuleVersionNumber.compareTo(currentModuleVersionNumber) != 0)
|
if (moduleCurrentVersionNumber.compareTo(moduleNewVersionNumber) < 0)
|
||||||
{
|
{
|
||||||
// if the installed version is later than the minimum version number of this patch
|
// if the installed version is later than the minimum version number of this patch
|
||||||
ModuleVersionNumber minVersion = this.getAppliesFromVersionNumber();
|
ModuleVersionNumber minVersion = this.getAppliesFromVersionNumber();
|
||||||
if (installedModuleVersionNumber.compareTo(minVersion) >= 0)
|
if (moduleCurrentVersionNumber.compareTo(minVersion) >= 0)
|
||||||
{
|
{
|
||||||
versionLaterThan = true;
|
versionLaterThan = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// v2.0 and v2.1 patches should not be run when both the current and the new version numbers are equals
|
||||||
|
else
|
||||||
|
{
|
||||||
|
versionLaterThan =true;
|
||||||
|
}
|
||||||
|
|
||||||
return versionLaterThan;
|
return versionLaterThan;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user