From 6175e72c661f17a36908dc4b5ca68b2d302a8164 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Fri, 25 Oct 2013 11:09:17 +0000 Subject: [PATCH] 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 --- source/java/org/alfresco/repo/lock/LockServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/repo/lock/LockServiceImpl.java b/source/java/org/alfresco/repo/lock/LockServiceImpl.java index 19603db044..6c2637dbdb 100644 --- a/source/java/org/alfresco/repo/lock/LockServiceImpl.java +++ b/source/java/org/alfresco/repo/lock/LockServiceImpl.java @@ -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);