From b4aa44c2f7bf52244b054a8321e3452a1de70d96 Mon Sep 17 00:00:00 2001 From: Andrew Hind Date: Mon, 23 Aug 2010 13:26:16 +0000 Subject: [PATCH] ALF-3142: patch.updateDmPermissions takes too long to complete - first upgrade test 100k set permissions/20 minutes (worst case each node has an ACL) - single threaded git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21934 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/patch/patch-services-context.xml | 6 +++++- .../repo/domain/permissions/ADMAccessControlListDAO.java | 9 ++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml index e803dfa69a..46b3ed9f11 100644 --- a/config/alfresco/patch/patch-services-context.xml +++ b/config/alfresco/patch/patch-services-context.xml @@ -1053,6 +1053,11 @@ 0 124 125 + + + + + @@ -1632,7 +1637,6 @@ - diff --git a/source/java/org/alfresco/repo/domain/permissions/ADMAccessControlListDAO.java b/source/java/org/alfresco/repo/domain/permissions/ADMAccessControlListDAO.java index 35f9d5090d..a299843a6a 100644 --- a/source/java/org/alfresco/repo/domain/permissions/ADMAccessControlListDAO.java +++ b/source/java/org/alfresco/repo/domain/permissions/ADMAccessControlListDAO.java @@ -158,13 +158,12 @@ public class ADMAccessControlListDAO implements AccessControlListDAO CounterSet result = new CounterSet(); // Do the children first + Acl existingAcl = null; Long aclId = nodeDAO.getNodeAclId(nodeId); - if (aclId == null) + if (aclId != null) { - // TODO: What happens here? It's causing NPEs - throw new IllegalStateException("Null aclId is causing NPEs. Node: " + nodeId); + existingAcl = aclDaoComponent.getAcl(aclId); } - Acl existingAcl = aclDaoComponent.getAcl(aclId); Long toInherit = null; Long idToInheritFrom = null; @@ -189,7 +188,7 @@ public class ADMAccessControlListDAO implements AccessControlListDAO idToInheritFrom = newAcl.getId(); nodeDAO.setNodeAclId(nodeId, idToInheritFrom); } - if (existingAcl.getAclType() == ACLType.SHARED) + else if (existingAcl.getAclType() == ACLType.SHARED) { // nothing to do just cascade into the children - we most likely did a bulk set above. }