Merged HEAD-BUG-FIX (Cloud/4.3) to HEAD (Cloud/4.3)

57158: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3)
      57008: Merged PATCHES/V4.2.0 (4.2.0) to V4.2-BUG-FIX (4.2.1)
         56822: ALF-20361: Not possible to edit MS Office document via CIFS if it was edited via CIFS and then new version was uploaded
         - Corrected LockServiceImpl.getLockState so that it handles the case when a "non-lock" appears in the lock store following a rollback
         - Added check for existence of NodeRef in LockServiceImpl.getLockState before testing for the Lockable aspect


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@57194 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2013-10-25 11:09:17 +00:00
parent a656240a2f
commit 6175e72c66

View File

@@ -823,10 +823,13 @@ public class LockServiceImpl implements LockService,
// Check in-memory for ephemeral locks first.
LockState lockState = lockStore.get(nodeRef);
if (lockState == null)
//ALF-20361: It is possible that a rollback has resulted in a "non-lock" lock state being added to
//the lock store. Because of that, we check both whether the retrieved lockState is null and, if it isn't,
//whether it represents a real lock
if (lockState == null || !lockState.isLockInfo())
{
// No in-memory state, so get from the DB.
if (nodeService.hasAspect(nodeRef, ContentModel.ASPECT_LOCKABLE))
if (nodeService.exists(nodeRef) && nodeService.hasAspect(nodeRef, ContentModel.ASPECT_LOCKABLE))
{
String lockOwner = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_LOCK_OWNER);