RM-991: Failed to applay patch AVMToADMRemoteStorePatch during upgrade from 3.4.13 to 4.2.0 with RM on Postgres

* all rm module patches are executed in their own transaction
 * all behaviours are turned off when executing a rm module patch



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@56088 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2013-09-27 12:38:46 +00:00
parent 8c96aad8f0
commit 7c03089524
11 changed files with 124 additions and 195 deletions

View File

@@ -3,8 +3,13 @@
<beans>
<bean id="rm.baseModulePatch" abstract="true" parent="module.baseComponent">
<property name="retryingTransactionHelper" ref="retryingTransactionHelper"/>
<property name="behaviourFilter" ref="policyBehaviourFilter" />
</bean>
<bean id="org_alfresco_module_rm_notificationTemplatePatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.NotificationTemplatePatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_notificationTemplatePatch"/>
@@ -19,7 +24,7 @@
</bean>
<bean id="org_alfresco_module_rm_notificationTemplatePatch_v21"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.NotificationTemplatePatch_v21">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_notificationTemplatePatch_v21"/>
@@ -37,7 +42,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv2ModelPatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv2ModelPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv2ModelPatch"/>
@@ -46,12 +51,11 @@
<property name="appliesFromVersion" value="2.0"/>
<property name="patchDAO" ref="patchDAO"/>
<property name="nodeDAO" ref="nodeDAO" />
<property name="retryingTransactionHelper" ref="retryingTransactionHelper"/>
<property name="qnameDAO" ref="qnameDAO"/>
</bean>
<bean id="org_alfresco_module_rm_RMv2FilePlanNodeRefPatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv2FilePlanNodeRefPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv2FilePlanNodeRefPatch"/>
@@ -62,15 +66,13 @@
<property name="nodeDAO" ref="nodeDAO" />
<property name="qnameDAO" ref="qnameDAO"/>
<property name="nodeService" ref="NodeService"/>
<property name="behaviourFilter" ref="policyBehaviourFilter"/>
<property name="permissionService" ref="PermissionService"/>
<property name="filePlanService" ref="FilePlanService" />
<property name="filePlanRoleService" ref="filePlanRoleService" />
<property name="retryingTransactionHelper" ref="retryingTransactionHelper"/>
</bean>
<bean id="org_alfresco_module_rm_RMv2SavedSearchPatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv2SavedSearchPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv2SavedSearchPatch"/>
@@ -82,7 +84,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv21InPlacePatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv21InPlacePatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv21InPlacePatch"/>
@@ -98,7 +100,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv21CapabilityPatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv21CapabilityPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv21CapabilityPatch"/>
@@ -111,7 +113,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv2RMAdminUserPatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv2RMAdminUserPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv2RMAdminUserPatch"/>
@@ -126,7 +128,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv21RecordInheritancePatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv21RecordInheritancePatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv21RecordInheritancePatch"/>
@@ -141,7 +143,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv21RolesPatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv21RolesPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv21RolesPatch"/>
@@ -154,7 +156,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv21ReportServicePatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv21ReportServicePatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv21ReportServicePatch"/>
@@ -166,7 +168,7 @@
</bean>
<bean id="org_alfresco_module_rm_RMv21BehaviorScriptsPatch"
parent="module.baseComponent"
parent="rm.baseModulePatch"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv21BehaviorScriptsPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv21BehaviorScriptsPatch"/>
@@ -175,7 +177,6 @@
<property name="appliesFromVersion" value="2.1"/>
<property name="fileFolderService" ref="FileFolderService"/>
<property name="nodeService" ref="NodeService"/>
<property name="retryingTransactionHelper" ref="retryingTransactionHelper" />
</bean>
</beans>

View File

@@ -19,6 +19,8 @@
package org.alfresco.module.org_alfresco_module_rm.patch;
import org.alfresco.repo.module.AbstractModuleComponent;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -34,6 +36,28 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
/** logger */
protected static Log logger = LogFactory.getLog(ModulePatchComponent.class);
/** Retrying transaction helper */
protected RetryingTransactionHelper retryingTransactionHelper;
/** Behaviour filter */
protected BehaviourFilter behaviourFilter;
/**
* @param retryingTransactionHelper retrying transaction helper
*/
public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
{
this.retryingTransactionHelper = retryingTransactionHelper;
}
/**
* @param behaviourFilter behaviour filter
*/
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
{
this.behaviourFilter = behaviourFilter;
}
/**
* @see org.alfresco.repo.module.AbstractModuleComponent#executeInternal()
*/
@@ -47,8 +71,31 @@ public abstract class ModulePatchComponent extends AbstractModuleComponent
logger.info("Module patch component '" + getName() + "' is executing ...");
}
// execute path within an isolated transaction
retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
behaviourFilter.disableBehaviour();
try
{
executePatch();
}
finally
{
behaviourFilter.enableBehaviour();
}
return null;
}
}, false, true);
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... completed module patch '" + getName() + "'");
}
}
catch (Throwable exception)
{
// record the exception otherwise it gets swallowed

View File

@@ -128,11 +128,6 @@ public class NotificationTemplatePatch extends ModulePatchComponent
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM Module NotificationTemplatePatch ...");
}
NodeRef supersededTemplate = notificationHelper.getSupersededTemplate();
updateTemplate(supersededTemplate, PATH_SUPERSEDED);

View File

@@ -27,7 +27,6 @@ import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.model.FileInfo;
@@ -68,8 +67,6 @@ public class RMv21BehaviorScriptsPatch extends ModulePatchComponent implements B
/** File Folder Service */
private FileFolderService fileFolderService;
private RetryingTransactionHelper retryingTransactionHelper;
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
@@ -80,19 +77,10 @@ public class RMv21BehaviorScriptsPatch extends ModulePatchComponent implements B
this.fileFolderService = fileFolderService;
}
public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
{
this.retryingTransactionHelper = retryingTransactionHelper;
}
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM module: RMv21BehaviorScriptsPatch executing ...");
}
// check that the rm config root has been correctly bootstrapped
if (nodeService.exists(RM_CONFIG) == false)
{
@@ -168,11 +156,6 @@ public class RMv21BehaviorScriptsPatch extends ModulePatchComponent implements B
}, AuthenticationUtil.getSystemUserName());
}
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... complete");
}
}
}

View File

@@ -84,11 +84,6 @@ public class RMv21CapabilityPatch extends ModulePatchComponent
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM module: RMv21CapabilityPatch executing ...");
}
Set<NodeRef> filePlans = filePlanService.getFilePlans();
if (logger.isDebugEnabled() == true)
@@ -136,11 +131,6 @@ public class RMv21CapabilityPatch extends ModulePatchComponent
FilePlanRoleService.ROLE_RECORDS_MANAGER,
FilePlanRoleService.ROLE_SECURITY_OFFICER);
}
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... complete");
}
}
/**

View File

@@ -109,11 +109,6 @@ public class RMv21RecordInheritancePatch extends ModulePatchComponent
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM module: RMv21RecordInheritancePatch executing ...");
}
Pair<Long, QName> aspectPair = qnameDAO.getQName(ASPECT_RECORD);
if (aspectPair != null)
{
@@ -143,10 +138,5 @@ public class RMv21RecordInheritancePatch extends ModulePatchComponent
}
}
}
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... complete");
}
}
}

View File

@@ -65,11 +65,6 @@ public class RMv21RolesPatch extends ModulePatchComponent implements BeanNameAwa
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM module: RMv21RolesPatch executing ...");
}
Set<NodeRef> filePlans = filePlanService.getFilePlans();
if (logger.isDebugEnabled() == true)
@@ -101,11 +96,6 @@ public class RMv21RolesPatch extends ModulePatchComponent implements BeanNameAwa
}
}
}
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... complete");
}
}
private void addAuthorityToZone(String roleGroupName)

View File

@@ -31,8 +31,6 @@ import org.alfresco.module.org_alfresco_module_rm.role.Role;
import org.alfresco.repo.domain.node.NodeDAO;
import org.alfresco.repo.domain.patch.PatchDAO;
import org.alfresco.repo.domain.qname.QNameDAO;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.Period;
@@ -55,25 +53,18 @@ public class RMv2FilePlanNodeRefPatch extends ModulePatchComponent
private static Log logger = LogFactory.getLog(RMv2FilePlanNodeRefPatch.class);
private NodeService nodeService;
private BehaviourFilter behaviourFilter;
private PatchDAO patchDAO;
private NodeDAO nodeDAO;
private QNameDAO qnameDAO;
private PermissionService permissionService;
private FilePlanService filePlanService;
private FilePlanRoleService filePlanRoleService;
private RetryingTransactionHelper retryingTransactionHelper;
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
{
this.behaviourFilter = behaviourFilter;
}
public void setPatchDAO(PatchDAO patchDAO)
{
this.patchDAO = patchDAO;
@@ -105,11 +96,6 @@ public class RMv2FilePlanNodeRefPatch extends ModulePatchComponent
this.filePlanRoleService = filePlanRoleService;
}
public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
{
this.retryingTransactionHelper = retryingTransactionHelper;
}
/**
* @param filePlanService file plan service
*/
@@ -123,20 +109,6 @@ public class RMv2FilePlanNodeRefPatch extends ModulePatchComponent
*/
@Override
protected void executePatch() throws Throwable
{
retryingTransactionHelper.doInTransaction(new Work(), false, true);
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... complete RM Module RMv2FilePlanNodeRef Patch");
}
}
private class Work implements RetryingTransactionHelper.RetryingTransactionCallback<Integer>
{
@Override
public Integer execute() throws Throwable
{
Pair<Long, QName> aspectPair = qnameDAO.getQName(RecordsManagementModel.ASPECT_FILE_PLAN_COMPONENT);
if (aspectPair != null)
@@ -148,9 +120,7 @@ public class RMv2FilePlanNodeRefPatch extends ModulePatchComponent
logger.debug(" ... updating " + filePlanComponents.size() + " items" );
}
behaviourFilter.disableBehaviour();
try
{
for (Long filePlanComponent : filePlanComponents)
{
Pair<Long, NodeRef> recordPair = nodeDAO.getNodePair(filePlanComponent);
@@ -191,14 +161,5 @@ public class RMv2FilePlanNodeRefPatch extends ModulePatchComponent
}
}
}
finally
{
behaviourFilter.enableBehaviour();
}
}
// nothing to do
return 0;
}
}
}

View File

@@ -49,8 +49,6 @@ public class RMv2ModelPatch extends ModulePatchComponent
private PatchDAO patchDAO;
private NodeDAO nodeDAO;
private QNameDAO qnameDAO;
private RetryingTransactionHelper retryingTransactionHelper;
public void setPatchDAO(PatchDAO patchDAO)
{
@@ -67,22 +65,12 @@ public class RMv2ModelPatch extends ModulePatchComponent
this.qnameDAO = qnameDAO;
}
public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
{
this.retryingTransactionHelper = retryingTransactionHelper;
}
/**
* @see org.alfresco.repo.module.AbstractModuleComponent#executeInternal()
*/
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM Module RMv2ModelPatch ...");
}
updateQName(QName.createQName(DOD_URI, "filePlan"), TYPE_FILE_PLAN, "TYPE");
updateQName(QName.createQName(DOD_URI, "recordCategory"), TYPE_RECORD_CATEGORY, "TYPE");
updateQName(QName.createQName(DOD_URI, "ghosted"), ASPECT_GHOSTED, "ASPECT");
@@ -90,10 +78,8 @@ public class RMv2ModelPatch extends ModulePatchComponent
private void updateQName(QName qnameBefore, QName qnameAfter, String reindexClass)
{
Work work = new Work(qnameBefore, qnameAfter, reindexClass);
retryingTransactionHelper.doInTransaction(work, false, true);
}
private class Work implements RetryingTransactionHelper.RetryingTransactionCallback<Integer>
@@ -102,6 +88,13 @@ public class RMv2ModelPatch extends ModulePatchComponent
private QName qnameAfter;
private String reindexClass;
/**
* Constructor
*
* @param qnameBefore qname before
* @param qnameAfter qname after
* @param reindexClass reindex class
*/
Work(QName qnameBefore, QName qnameAfter, String reindexClass)
{
this.qnameBefore = qnameBefore;
@@ -109,8 +102,7 @@ public class RMv2ModelPatch extends ModulePatchComponent
this.reindexClass = reindexClass;
}
/*
* (non-Javadoc)
/**
* @see org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback#execute()
*/
@Override

View File

@@ -115,11 +115,6 @@ public class RMv2RMAdminUserPatch extends ModulePatchComponent implements BeanNa
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM Module RMv2RMAdminUserPatch ...");
}
String user = filePlanAuthenticationService.getRmAdminUserName();
String firstName = I18NUtil.getMessage(MSG_FIRST_NAME);
String lastName = I18NUtil.getMessage(MSG_LAST_NAME);
@@ -148,11 +143,6 @@ public class RMv2RMAdminUserPatch extends ModulePatchComponent implements BeanNa
{
filePlanRoleService.assignRoleToAuthority(filePlan, FilePlanRoleService.ROLE_ADMIN, user);
}
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... RMv2RMAdminUserPatch complete");
}
}
}
}

View File

@@ -72,11 +72,6 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
@Override
protected void executePatch() throws Throwable
{
if (logger.isDebugEnabled() == true)
{
logger.debug("RM Module RMv2SavedSearchPatch ...");
}
if (siteService.getSite(RM_SITE_ID) != null)
{
// get the saved searches
@@ -99,10 +94,5 @@ public class RMv2SavedSearchPatch extends ModulePatchComponent
savedSearchDetails.isPublic());
}
}
if (logger.isDebugEnabled() == true)
{
logger.debug(" ... complete");
}
}
}