From 2ec7305fd959e3e47f8f16b33b2e81ae319b3cfc Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Wed, 15 Apr 2009 12:07:57 +0000 Subject: [PATCH] Fixed LockDAO to use correct, new lock token during bulk update git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13954 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../locks-common-SqlMap.xml | 2 ++ .../org/alfresco/repo/domain/locks/LockDAOTest.java | 1 - .../repo/domain/locks/ibatis/LockDAOImpl.java | 13 +++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml index d2564bdbc7..73c084ea8a 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/locks-common-SqlMap.xml @@ -40,6 +40,7 @@ + @@ -131,6 +132,7 @@ set version = version + 1, lock_token = lower(?), + start_time = ?, expiry_time = ? where excl_resource_id = ? and diff --git a/source/java/org/alfresco/repo/domain/locks/LockDAOTest.java b/source/java/org/alfresco/repo/domain/locks/LockDAOTest.java index b5b740bb43..8efcca37f0 100644 --- a/source/java/org/alfresco/repo/domain/locks/LockDAOTest.java +++ b/source/java/org/alfresco/repo/domain/locks/LockDAOTest.java @@ -26,7 +26,6 @@ package org.alfresco.repo.domain.locks; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import junit.framework.TestCase; diff --git a/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java b/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java index 5964daa65c..88303e7fcc 100644 --- a/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/locks/ibatis/LockDAOImpl.java @@ -145,9 +145,9 @@ public class LockDAOImpl extends AbstractLockDAOImpl updateLockEntity.setExclusiveResourceId(lockEntity.getExclusiveResourceId()); updateLockEntity.setLockToken(lockToken); long now = System.currentTimeMillis(); - Long exp = now + timeToLive; - updateLockEntity.setStartTime(lockEntity.getStartTime()); // Keep original start time - updateLockEntity.setExpiryTime(exp); // Don't update the start time + long exp = now + timeToLive; + updateLockEntity.setStartTime(new Long(now)); + updateLockEntity.setExpiryTime(new Long(exp)); template.update(UPDATE_LOCK, updateLockEntity, 1); // Done return updateLockEntity; @@ -163,10 +163,11 @@ public class LockDAOImpl extends AbstractLockDAOImpl Map params = new HashMap(11); params.put("exclusiveLockResourceId", exclusiveLockResourceId); params.put("oldLockToken", oldLockToken); - params.put("newLockToken", oldLockToken); + params.put("newLockToken", newLockToken); long now = System.currentTimeMillis(); - Long exp = new Long(now + timeToLive); - params.put("newExpiryTime", exp); + long exp = now + timeToLive; + params.put("newStartTime", new Long(now)); + params.put("newExpiryTime", new Long(exp)); int updateCount = template.update(UPDATE_EXCLUSIVE_LOCK, params); // Done return updateCount;