Minor follow up on 32329: ALF-11734: Concurrency conditions not handled correctly for ACL persistence

- Pessimistically throw away the node cache entry referencing the ACL


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32381 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2011-11-29 11:45:48 +00:00
parent 448350d86a
commit bd4baa5e98

View File

@@ -1055,11 +1055,20 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
Long childAclId = null;
if (parentAclId != null)
{
AccessControlListProperties inheritedAcl = aclDAO.getAccessControlListProperties(
aclDAO.getInheritedAccessControlList(parentAclId));
if (inheritedAcl != null)
try
{
childAclId = inheritedAcl.getId();
Long inheritedACL = aclDAO.getInheritedAccessControlList(parentAclId);
AccessControlListProperties inheritedAcl = aclDAO.getAccessControlListProperties(inheritedACL);
if (inheritedAcl != null)
{
childAclId = inheritedAcl.getId();
}
}
catch (Throwable e)
{
// The get* calls above actually do writes. So pessimistically get rid of the
// parent node from the cache in case it was wrong somehow.
invalidateNodeCaches(parentNodeId);
}
}
// Build the cm:auditable properties