mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
ACE-1918: Surf-config patch improvements. Made:
- surfConfigFolder patch to use Cron trigger - surf-config SQL query more efficient - changes to comments and formatting git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@73049 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -134,7 +134,12 @@
|
|||||||
<parameter property="maxNodeId" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
<parameter property="maxNodeId" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
</parameterMap>
|
</parameterMap>
|
||||||
|
|
||||||
<parameterMap id="parameter_minMaxNodeId" type="map">
|
<parameterMap id="parameter_qnameCrcAndMinMaxNodeId" type="map">
|
||||||
|
<parameter property="qnameCrcSites" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
|
<parameter property="qnameCrcSurfConfig" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
|
<parameter property="qnameCrcPages" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
|
<parameter property="qnameCrcUser" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
|
<parameter property="qnameTypeIdContains" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
<parameter property="minNodeId" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
<parameter property="minNodeId" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
<parameter property="maxNodeId" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
<parameter property="maxNodeId" jdbcType="BIGINT" javaType="java.lang.Long"/>
|
||||||
</parameterMap>
|
</parameterMap>
|
||||||
@@ -567,7 +572,7 @@
|
|||||||
company_home/sites/surf-config/pages/user
|
company_home/sites/surf-config/pages/user
|
||||||
company_home/sites/surf-config/pages/user{userId}
|
company_home/sites/surf-config/pages/user{userId}
|
||||||
-->
|
-->
|
||||||
<select id="select_ChildrenOfTheSharedSurfConfigFolder" parameterMap="parameter_minMaxNodeId" resultMap="result_nodeNameUuidMap" >
|
<select id="select_ChildrenOfTheSharedSurfConfigFolder" parameterMap="parameter_qnameCrcAndMinMaxNodeId" resultMap="result_nodeNameUuidMap" >
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
select lev3.child_node_name as name, lev3.child_node_id as node_id, targetn.uuid, targets.protocol, targets.identifier
|
select lev3.child_node_name as name, lev3.child_node_id as node_id, targetn.uuid, targets.protocol, targets.identifier
|
||||||
from
|
from
|
||||||
@@ -577,8 +582,10 @@
|
|||||||
join alf_node targetn on (targetn.id = lev3.child_node_id)
|
join alf_node targetn on (targetn.id = lev3.child_node_id)
|
||||||
join alf_store targets on (targets.id = targetn.store_id)
|
join alf_store targets on (targets.id = targetn.store_id)
|
||||||
where
|
where
|
||||||
lev1.qname_localname = 'sites'
|
lev1.qname_crc = #{qnameCrcSites}
|
||||||
and lev2.qname_localname = 'surf-config'
|
and lev1.type_qname_id = #{qnameTypeIdContains}
|
||||||
|
and lev2.qname_crc = #{qnameCrcSurfConfig}
|
||||||
|
and lev2.type_qname_id = #{qnameTypeIdContains}
|
||||||
and lev3.child_node_id >= #{minNodeId}
|
and lev3.child_node_id >= #{minNodeId}
|
||||||
and lev3.child_node_id < #{maxNodeId}
|
and lev3.child_node_id < #{maxNodeId}
|
||||||
UNION
|
UNION
|
||||||
@@ -591,9 +598,12 @@
|
|||||||
join alf_node targetn on (targetn.id = lev4.child_node_id)
|
join alf_node targetn on (targetn.id = lev4.child_node_id)
|
||||||
join alf_store targets on (targets.id = targetn.store_id)
|
join alf_store targets on (targets.id = targetn.store_id)
|
||||||
where
|
where
|
||||||
lev1.qname_localname = 'sites'
|
lev1.qname_crc = #{qnameCrcSites}
|
||||||
and lev2.qname_localname = 'surf-config'
|
and lev1.type_qname_id = #{qnameTypeIdContains}
|
||||||
and lev3.qname_localname = 'pages'
|
and lev2.qname_crc = #{qnameCrcSurfConfig}
|
||||||
|
and lev2.type_qname_id = #{qnameTypeIdContains}
|
||||||
|
and lev3.qname_crc = #{qnameCrcPages}
|
||||||
|
and lev3.type_qname_id = #{qnameTypeIdContains}
|
||||||
and lev4.child_node_id >= #{minNodeId}
|
and lev4.child_node_id >= #{minNodeId}
|
||||||
and lev4.child_node_id < #{maxNodeId}
|
and lev4.child_node_id < #{maxNodeId}
|
||||||
UNION
|
UNION
|
||||||
@@ -607,10 +617,14 @@
|
|||||||
join alf_node targetn on (targetn.id = lev5.child_node_id)
|
join alf_node targetn on (targetn.id = lev5.child_node_id)
|
||||||
join alf_store targets on (targets.id = targetn.store_id)
|
join alf_store targets on (targets.id = targetn.store_id)
|
||||||
where
|
where
|
||||||
lev1.qname_localname = 'sites'
|
lev1.qname_crc = #{qnameCrcSites}
|
||||||
and lev2.qname_localname = 'surf-config'
|
and lev1.type_qname_id = #{qnameTypeIdContains}
|
||||||
and lev3.qname_localname = 'pages'
|
and lev2.qname_crc = #{qnameCrcSurfConfig}
|
||||||
and lev4.qname_localname = 'user'
|
and lev2.type_qname_id = #{qnameTypeIdContains}
|
||||||
|
and lev3.qname_crc = #{qnameCrcPages}
|
||||||
|
and lev3.type_qname_id = #{qnameTypeIdContains}
|
||||||
|
and lev4.qname_crc = #{qnameCrcUser}
|
||||||
|
and lev4.type_qname_id = #{qnameTypeIdContains}
|
||||||
and lev5.child_node_id >= #{minNodeId}
|
and lev5.child_node_id >= #{minNodeId}
|
||||||
and lev5.child_node_id < #{maxNodeId}
|
and lev5.child_node_id < #{maxNodeId}
|
||||||
]]>
|
]]>
|
||||||
|
@@ -3747,7 +3747,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<!-- Fix data related to cm:copiedfrom aspect -->
|
<!-- Add cm:indexControl aspect to surf-config folders and their children -->
|
||||||
<bean id="patch.surfConfigFolder" class="org.alfresco.repo.admin.patch.impl.SurfConfigFolderPatch" parent="basePatch" >
|
<bean id="patch.surfConfigFolder" class="org.alfresco.repo.admin.patch.impl.SurfConfigFolderPatch" parent="basePatch" >
|
||||||
<property name="id"><value>patch.surfConfigFolder</value></property>
|
<property name="id"><value>patch.surfConfigFolder</value></property>
|
||||||
<property name="description"><value>patch.surfConfigFolderPatch.description</value></property>
|
<property name="description"><value>patch.surfConfigFolderPatch.description</value></property>
|
||||||
@@ -3764,7 +3764,7 @@
|
|||||||
<property name="behaviourFilter" ref="policyBehaviourFilter" />
|
<property name="behaviourFilter" ref="policyBehaviourFilter" />
|
||||||
<property name="ruleService" ref="ruleService" />
|
<property name="ruleService" ref="ruleService" />
|
||||||
<property name="jobLockService" ref="jobLockService" />
|
<property name="jobLockService" ref="jobLockService" />
|
||||||
<!-- Do we deferr running the shared folder patch? -->
|
<!-- Do we deferr running the surf-config folder patch? -->
|
||||||
<property name="deferred"><value>${system.patch.surfConfigFolder.deferred}</value></property>
|
<property name="deferred"><value>${system.patch.surfConfigFolder.deferred}</value></property>
|
||||||
</bean>
|
</bean>
|
||||||
</beans>
|
</beans>
|
||||||
|
@@ -1101,9 +1101,11 @@ system.lockTryTimeout.DictionaryDAOImpl=2000
|
|||||||
system.lockTryTimeout.MessageServiceImpl=${system.lockTryTimeout}
|
system.lockTryTimeout.MessageServiceImpl=${system.lockTryTimeout}
|
||||||
system.lockTryTimeout.PolicyComponentImpl=${system.lockTryTimeout}
|
system.lockTryTimeout.PolicyComponentImpl=${system.lockTryTimeout}
|
||||||
|
|
||||||
|
|
||||||
|
# SurfConfigFolder Patch
|
||||||
#
|
#
|
||||||
# Do we defer running the shared folder patch?
|
# Do we deferr running the surf-config folder patch?
|
||||||
#
|
#
|
||||||
system.patch.surfConfigFolder.deferred=true
|
system.patch.surfConfigFolder.deferred=true
|
||||||
|
# Default value. i.e. never run. It can be triggered using JMX
|
||||||
system.patchSurfConfigFolderTrigger.startDelayMinutes=2
|
system.patch.surfConfigFolder.cronExpression=* * * * * ? 2099
|
@@ -355,18 +355,18 @@
|
|||||||
</map>
|
</map>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
<bean id="patchSurfConfigFolderTrigger" class="org.alfresco.util.TriggerBean">
|
<bean id="patchSurfConfigFolderTrigger" class="org.alfresco.util.CronTriggerBean">
|
||||||
<property name="jobDetail">
|
<property name="jobDetail">
|
||||||
<ref bean="patchSurfConfigFolderJobDetail" />
|
<ref bean="patchSurfConfigFolderJobDetail" />
|
||||||
</property>
|
</property>
|
||||||
<property name="scheduler">
|
<property name="scheduler">
|
||||||
<ref bean="schedulerFactory" />
|
<ref bean="schedulerFactory" />
|
||||||
</property>
|
</property>
|
||||||
<property name="startDelayMinutes">
|
<property name="cronExpression">
|
||||||
<value>${system.patchSurfConfigFolderTrigger.startDelayMinutes}</value>
|
<value>${system.patch.surfConfigFolder.cronExpression}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="repeatCount">
|
<property name="startDelayMinutes">
|
||||||
<value>0</value>
|
<value>${system.cronJob.startDelayMinutes}</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
</beans>
|
</beans>
|
||||||
|
@@ -127,8 +127,8 @@ public abstract class AsynchronousPatch extends AbstractPatch
|
|||||||
|
|
||||||
if (!appliedPatch.getWasExecuted())
|
if (!appliedPatch.getWasExecuted())
|
||||||
{
|
{
|
||||||
// the patch was not executed
|
// the patch was not executed. E.g. not relevant to the current schema
|
||||||
logger.debug(I18NUtil.getMessage(MSG_NOT_EXECUTED, appliedPatch.getId(), appliedPatch.getReport()));
|
logger.info(I18NUtil.getMessage(MSG_NOT_EXECUTED, appliedPatch.getId(), appliedPatch.getReport()));
|
||||||
}
|
}
|
||||||
else if (appliedPatch.getSucceeded())
|
else if (appliedPatch.getSucceeded())
|
||||||
{
|
{
|
||||||
|
@@ -395,8 +395,7 @@ public class SurfConfigFolderPatch extends AsynchronousPatch
|
|||||||
int minResults = SITE_BATCH_MAX_QUERY_RANGE / 2;
|
int minResults = SITE_BATCH_MAX_QUERY_RANGE / 2;
|
||||||
while (currentId <= maxId && siteNodeIDs.size() < minResults)
|
while (currentId <= maxId && siteNodeIDs.size() < minResults)
|
||||||
{
|
{
|
||||||
List<Long> nodeIds = patchDAO.getNodesByTypeQNameId(siteTypeQNameId, currentId, currentId
|
List<Long> nodeIds = patchDAO.getNodesByTypeQNameId(siteTypeQNameId, currentId, currentId + SITE_BATCH_MAX_QUERY_RANGE);
|
||||||
+ SITE_BATCH_MAX_QUERY_RANGE);
|
|
||||||
siteNodeIDs.addAll(nodeIds);
|
siteNodeIDs.addAll(nodeIds);
|
||||||
// Increment the minimum ID
|
// Increment the minimum ID
|
||||||
currentId += SITE_BATCH_MAX_QUERY_RANGE;
|
currentId += SITE_BATCH_MAX_QUERY_RANGE;
|
||||||
@@ -446,8 +445,7 @@ public class SurfConfigFolderPatch extends AsynchronousPatch
|
|||||||
while (currentId <= maxId && folderNodes.size() < minResults)
|
while (currentId <= maxId && folderNodes.size() < minResults)
|
||||||
{
|
{
|
||||||
|
|
||||||
List<NodeRef> nodeIds = patchDAO.getChildrenOfTheSharedSurfConfigFolder(currentId, currentId
|
List<NodeRef> nodeIds = patchDAO.getChildrenOfTheSharedSurfConfigFolder(currentId, currentId + SHARED_SURF_CONFIG_BATCH_MAX_QUERY_RANGE);
|
||||||
+ SHARED_SURF_CONFIG_BATCH_MAX_QUERY_RANGE);
|
|
||||||
folderNodes.addAll(nodeIds);
|
folderNodes.addAll(nodeIds);
|
||||||
// Increment the minimum ID
|
// Increment the minimum ID
|
||||||
currentId += SHARED_SURF_CONFIG_BATCH_MAX_QUERY_RANGE;
|
currentId += SHARED_SURF_CONFIG_BATCH_MAX_QUERY_RANGE;
|
||||||
|
@@ -30,10 +30,13 @@ import org.alfresco.model.ContentModel;
|
|||||||
import org.alfresco.repo.domain.CrcHelper;
|
import org.alfresco.repo.domain.CrcHelper;
|
||||||
import org.alfresco.repo.domain.avm.AVMNodeEntity;
|
import org.alfresco.repo.domain.avm.AVMNodeEntity;
|
||||||
import org.alfresco.repo.domain.locale.LocaleDAO;
|
import org.alfresco.repo.domain.locale.LocaleDAO;
|
||||||
|
import org.alfresco.repo.domain.node.ChildAssocEntity;
|
||||||
import org.alfresco.repo.domain.patch.AbstractPatchDAOImpl;
|
import org.alfresco.repo.domain.patch.AbstractPatchDAOImpl;
|
||||||
import org.alfresco.repo.domain.qname.QNameDAO;
|
import org.alfresco.repo.domain.qname.QNameDAO;
|
||||||
|
import org.alfresco.repo.site.SiteModel;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.util.Pair;
|
import org.alfresco.util.Pair;
|
||||||
import org.alfresco.util.ParameterCheck;
|
import org.alfresco.util.ParameterCheck;
|
||||||
@@ -733,7 +736,25 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
|
|||||||
@Override
|
@Override
|
||||||
public List<NodeRef> getChildrenOfTheSharedSurfConfigFolder(Long minNodeId, Long maxNodeId)
|
public List<NodeRef> getChildrenOfTheSharedSurfConfigFolder(Long minNodeId, Long maxNodeId)
|
||||||
{
|
{
|
||||||
Map<String, Object> params = new HashMap<String, Object>(2);
|
Pair<Long, QName> containsAssocQNamePair = qnameDAO.getQName(ContentModel.ASSOC_CONTAINS);
|
||||||
|
if (containsAssocQNamePair == null)
|
||||||
|
{
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> params = new HashMap<String, Object>(7);
|
||||||
|
|
||||||
|
// Get qname CRC
|
||||||
|
Long qnameCrcSites = ChildAssocEntity.getQNameCrc(QName.createQName(SiteModel.SITE_MODEL_URL, "sites"));
|
||||||
|
Long qnameCrcSurfConfig = ChildAssocEntity.getQNameCrc(QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "surf-config"));
|
||||||
|
Long qnameCrcPages = ChildAssocEntity.getQNameCrc(QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "pages"));
|
||||||
|
Long qnameCrcUser = ChildAssocEntity.getQNameCrc(QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "user"));
|
||||||
|
|
||||||
|
params.put("qnameCrcSites", qnameCrcSites);
|
||||||
|
params.put("qnameCrcSurfConfig", qnameCrcSurfConfig);
|
||||||
|
params.put("qnameCrcPages", qnameCrcPages);
|
||||||
|
params.put("qnameCrcUser", qnameCrcUser);
|
||||||
|
params.put("qnameTypeIdContains", containsAssocQNamePair.getFirst());
|
||||||
params.put("minNodeId", minNodeId);
|
params.put("minNodeId", minNodeId);
|
||||||
params.put("maxNodeId", maxNodeId);
|
params.put("maxNodeId", maxNodeId);
|
||||||
|
|
||||||
|
@@ -86,8 +86,7 @@ public class FileFolderUtil
|
|||||||
list.add(new PathElementDetails(pathElement, null));
|
list.add(new PathElementDetails(pathElement, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
FileInfo fileInfo = makeFolders(service, null, parentNodeRef, list, folderTypeQName, behaviourFilter,
|
FileInfo fileInfo = makeFolders(service, null, parentNodeRef, list, folderTypeQName, behaviourFilter, parentBehavioursToDisable);
|
||||||
parentBehavioursToDisable);
|
|
||||||
|
|
||||||
// Should we check the type?
|
// Should we check the type?
|
||||||
return fileInfo;
|
return fileInfo;
|
||||||
|
Reference in New Issue
Block a user