GH-8730: Fix isAcquiredInThisProcess to use localLock
The `ExpirableLockRegistry.expireUnusedOlderThan()` uses a query to the target store by mistake. The logic of this API is indeed about the local cache for those lock instances. We cannot effect any other processes with this cache. And even if we remove our local instance while it is locked in other process, that doesn't mean that on the next `obtain()` call, when we got a fresh local instance, we will be able to acquire a lock in target store. * Fix `isAcquiredInThisProcess()` to check only `localLock.isLocked()` **Cherry-pick to `6.1.x` & `6.0.x`** # Conflicts: # spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/lock/JdbcLockRegistry.java
This commit is contained in:
committed by
Artem Bilan
parent
a4cadc93cf
commit
f687438f04
@@ -83,6 +83,7 @@ import org.springframework.util.ReflectionUtils;
|
||||
* @author Unseok Kim
|
||||
* @author Anton Gabov
|
||||
* @author Eddie Cho
|
||||
* @author Myeonghyeon Lee
|
||||
*
|
||||
* @since 4.0
|
||||
*
|
||||
@@ -503,8 +504,7 @@ public final class RedisLockRegistry implements ExpirableLockRegistry, Disposabl
|
||||
}
|
||||
|
||||
public final boolean isAcquiredInThisProcess() {
|
||||
return RedisLockRegistry.this.clientId.equals(
|
||||
RedisLockRegistry.this.redisTemplate.boundValueOps(this.lockKey).get());
|
||||
return this.localLock.isLocked();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user