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,13 +1055,22 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
Long childAclId = null; Long childAclId = null;
if (parentAclId != null) if (parentAclId != null)
{ {
AccessControlListProperties inheritedAcl = aclDAO.getAccessControlListProperties( try
aclDAO.getInheritedAccessControlList(parentAclId)); {
Long inheritedACL = aclDAO.getInheritedAccessControlList(parentAclId);
AccessControlListProperties inheritedAcl = aclDAO.getAccessControlListProperties(inheritedACL);
if (inheritedAcl != null) if (inheritedAcl != null)
{ {
childAclId = inheritedAcl.getId(); 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 // Build the cm:auditable properties
AuditablePropertiesEntity auditableProps = new AuditablePropertiesEntity(); AuditablePropertiesEntity auditableProps = new AuditablePropertiesEntity();
boolean setAuditProps = auditableProps.setAuditValues(null, null, auditableProperties); boolean setAuditProps = auditableProps.setAuditValues(null, null, auditableProperties);