From 5791f1e7fbfe4f4b8b099a30f0ab2a4c3a9d6d22 Mon Sep 17 00:00:00 2001 From: Steven Glover Date: Mon, 26 Jul 2010 12:44:30 +0000 Subject: [PATCH] Fix for ALF-3952 - Search/Read Permissions Evaluation Performance Includes read permission evaluation optimisation, bulk loading of aspects git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21406 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/cache-context.xml | 30 + config/alfresco/dao/dao-context.xml | 7 + config/alfresco/ehcache-default.xml | 12 +- .../node-common-SqlMap.xml | 43 +- .../public-services-security-context.xml | 15 +- config/alfresco/repository.properties | 4 + .../cmis/search/CMISResultSetImpl.java | 39 + .../org/alfresco/repo/avm/AVMNodeService.java | 8 +- .../alfresco/repo/cache/EhCacheTracerJob.java | 2 + .../repo/domain/node/AbstractNodeDAOImpl.java | 27 +- .../repo/domain/node/NodeAspectsEntity.java | 29 +- .../alfresco/repo/domain/node/NodeDAO.java | 3 +- .../repo/domain/node/ibatis/NodeDAOImpl.java | 30 +- .../AVMPermissionsDaoComponentImpl.java | 1 + .../AbstractPermissionsDaoComponentImpl.java | 20 + .../repo/domain/permissions/AclDAOImpl.java | 16 +- .../repo/domain/permissions/AclEntity.java | 8 +- .../domain/permissions/AclUpdateEntity.java | 4 +- .../repo/node/db/DbNodeServiceImpl.java | 18 + .../repo/search/AbstractResultSet.java | 42 +- .../alfresco/repo/search/EmptyResultSet.java | 40 + .../repo/search/SearchServiceTest.java | 2 +- .../search/impl/lucene/ADMLuceneTest.java | 3423 +++++++++-------- .../LuceneAlfrescoFtsQueryLanguage.java | 7 +- .../LuceneAlfrescoSqlQueryLanguage.java | 1 - .../LuceneCmisStrictSqlQueryLanguage.java | 1 - .../search/impl/lucene/LuceneResultSet.java | 59 +- .../impl/lucene/PagingLuceneResultSet.java | 40 + .../impl/lucene/LuceneQueryEngine.java | 2 - .../search/results/ResultSetSPIWrapper.java | 42 +- .../repo/search/results/SortedResultSet.java | 40 + .../security/permissions/impl/ModelDAO.java | 3 +- .../impl/PermissionServiceImpl.java | 554 ++- .../ACLEntryAfterInvocationProvider.java | 152 +- .../impl/acegi/FilteringResultSet.java | 39 + .../impl/model/PermissionModel.java | 81 +- .../noop/PermissionServiceNOOPImpl.java | 16 +- .../repo/version/NodeServiceImpl.java | 9 + 38 files changed, 3095 insertions(+), 1774 deletions(-) diff --git a/config/alfresco/cache-context.xml b/config/alfresco/cache-context.xml index 5ef22757f4..d3c88e25a9 100644 --- a/config/alfresco/cache-context.xml +++ b/config/alfresco/cache-context.xml @@ -400,7 +400,37 @@ 10000 + + + + + + + + + + org.alfresco.cache.readersCache + + + + + + + + + + + + + + org.alfresco.readersTransactionalCache + + + 10000 + + + diff --git a/config/alfresco/dao/dao-context.xml b/config/alfresco/dao/dao-context.xml index 5de38b1db8..aa174a6cea 100644 --- a/config/alfresco/dao/dao-context.xml +++ b/config/alfresco/dao/dao-context.xml @@ -184,6 +184,9 @@ + + + @@ -199,6 +202,9 @@ + + + @@ -234,6 +240,7 @@ + diff --git a/config/alfresco/ehcache-default.xml b/config/alfresco/ehcache-default.xml index 187fde7e8d..17f04ca246 100644 --- a/config/alfresco/ehcache-default.xml +++ b/config/alfresco/ehcache-default.xml @@ -212,6 +212,14 @@ overflowToDisk="false" statistics="false" /> + + + - - - \ No newline at end of file + diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml index f73efdd8a6..d26a2b9055 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml @@ -25,7 +25,7 @@ - + @@ -86,6 +86,16 @@ + + + + + + + + @@ -409,7 +419,7 @@ delete from alf_node_aspects where - node_id = #id# + node_id = #nodeId# and qname_id in #aspectQNameIds[]# @@ -592,7 +602,34 @@ #qnameIds[]# + + + select + aspects.node_id as node_id, + aspects.qname_id as qname_id + + + + - +