diff --git a/distributed-lock-gorm/grails-app/domain/com/bertram/lock/DistributedLock.groovy b/distributed-lock-gorm/grails-app/domain/com/bertram/lock/DistributedLock.groovy index 43a2320..c5a25f5 100644 --- a/distributed-lock-gorm/grails-app/domain/com/bertram/lock/DistributedLock.groovy +++ b/distributed-lock-gorm/grails-app/domain/com/bertram/lock/DistributedLock.groovy @@ -1,11 +1,11 @@ package com.bertram.lock class DistributedLock { - String key + String name String value Long timeout //epoch timeout static constraints = { - key unique:true, nullable:false + name unique:true, nullable:false value nullable:true timeout nullable:true } diff --git a/distributed-lock-gorm/src/main/groovy/com/bertram/lock/provider/GormLockProvider.groovy b/distributed-lock-gorm/src/main/groovy/com/bertram/lock/provider/GormLockProvider.groovy index eaf4fff..af37497 100644 --- a/distributed-lock-gorm/src/main/groovy/com/bertram/lock/provider/GormLockProvider.groovy +++ b/distributed-lock-gorm/src/main/groovy/com/bertram/lock/provider/GormLockProvider.groovy @@ -34,8 +34,8 @@ public class GormLockProvider extends LockProvider { Promises.tasks { def now = new Date().time DistributedLock.withNewSession { session -> - DistributedLock.where{key == buildKey(name,ns) && timeout < now}.deleteAll() - def lock = new DistributedLock(key:buildKey(name,ns), value: keyValue,timeout: now + expires) + DistributedLock.where{name == buildKey(name,ns) && timeout < now}.deleteAll() + def lock = new DistributedLock(name:buildKey(name,ns), value: keyValue,timeout: now + expires) lock.save(flush:true,failOnError:true) } }.get() @@ -74,7 +74,7 @@ public class GormLockProvider extends LockProvider { def now = new Date().time DistributedLock.withNewSession { session -> def lock = DistributedLock.withCriteria(uniqueResult:true) { - eq('key',buildKey(name,ns)) + eq('name',buildKey(name,ns)) or { isNull('timeout') gte('timeout',now) @@ -86,7 +86,7 @@ public class GormLockProvider extends LockProvider { log.warn("Someone else has the lock ${name}") return } - DistributedLock.where{key == lock.key}.deleteAll() + DistributedLock.where{name == lock.key}.deleteAll() } }.get() } @@ -110,7 +110,7 @@ public class GormLockProvider extends LockProvider { def now = new Date().time DistributedLock.withNewSession { session -> def lock = DistributedLock.withCriteria(uniqueResult:true) { - eq('key',buildKey(name,ns)) + eq('name',buildKey(name,ns)) or { isNull('timeout') gte('timeout',now) @@ -144,7 +144,7 @@ public class GormLockProvider extends LockProvider { def now = new Date().time DistributedLock.withNewSession { session -> def lock = DistributedLock.withCriteria(uniqueResult:true) { - eq('key',buildKey(name,ns)) + eq('name',buildKey(name,ns)) or { isNull('timeout') gte('timeout',now) @@ -153,9 +153,9 @@ public class GormLockProvider extends LockProvider { } if(lock) { if (expires > 0) - DistributedLock.where { key == buildKey(name,ns) && (timeout == null || timeout > now)}.updateAll(timeout:now + expires) + DistributedLock.where { name == buildKey(name,ns) && (timeout == null || timeout > now)}.updateAll(timeout:now + expires) else - DistributedLock.where{ key == buildKey(name,ns) && (timeout == null || timeout > now)}.updateAll(timeout:null) + DistributedLock.where{ name == buildKey(name,ns) && (timeout == null || timeout > now)}.updateAll(timeout:null) return true } else { return false @@ -180,7 +180,7 @@ public class GormLockProvider extends LockProvider { try { return Promises.tasks { DistributedLock.withNewSession { session -> - return DistributedLock.exeuteQuery("select key from DistributedLock distributedlock where distributedlock.key like ${namespace + '.%'} distributedlock.timeout IS NULL OR distributedlock.timeout < ${new Date().time}") + return DistributedLock.executeQuery("select key from DistributedLock distributedlock where distributedlock.key like ${namespace + '.%'} distributedlock.timeout IS NULL OR distributedlock.timeout < ${new Date().time}") } }.get() } diff --git a/distributed-lock/src/main/groovy/com/bertram/lock/conf/LockServiceConfigurer.groovy b/distributed-lock/src/main/groovy/com/bertram/lock/conf/LockServiceConfigurer.groovy index 1a2051b..889892f 100644 --- a/distributed-lock/src/main/groovy/com/bertram/lock/conf/LockServiceConfigurer.groovy +++ b/distributed-lock/src/main/groovy/com/bertram/lock/conf/LockServiceConfigurer.groovy @@ -37,7 +37,9 @@ class LockServiceConfigurer { config.provider.type = Class.forName(config.provider.type) } this.beanBuilder."${getLockServiceBeanName()}"(config.provider.type) { - redisBeanName = config.provider?.connect ?: 'redisService' + if(config.provider.type == RedisLockProvider) { + redisBeanName = config.provider?.connect ?: 'redisService' + } grailsApp = app if (config.namespace) namespace = config.namespace