apache / apache/curator

[CURATOR-347] Shared read/write lock acquired by one thread cannot be released by another

Open
#867 2 comments 0 reactions 0 assignees View on GitHub
bug imported-jira-issue
Dominant language
Java
Stars
3.2k
Forks
1.2k
PR merge metrics
No merged PRs in 30d

Description

Consider the following: lock is being acquired by main thread but released by another thread. This throws an exception:

java.lang.IllegalMonitorStateException: You do not own the lock: /locks/abc

at org.apache.curator.framework.recipes.locks.InterProcessMutex.release(InterProcessMutex.java:140)

Are locks thread specific? That wouldn't make sense. How else can I achieve this? Also would be nice to have a non-reentrant read/write shared lock.

public static void main(String[] args) throws Exception {

final CuratorFramework client = CuratorFrameworkFactory.builder()

.connectString(ApplicationProperties.getConfig().getMessagebusSyncServers()).sessionTimeoutMs(5000)

.connectionTimeoutMs(3000).retryPolicy(new ExponentialBackoffRetry(1000, 3)).build();

client.start();

InterProcessReadWriteLock lock = new InterProcessReadWriteLock(client, "/locks/abc");

lock.writeLock().acquire();

Thread r = new Thread() {

@Override

public void run() {

try


{
InterProcessReadWriteLock lock = new InterProcessReadWriteLock(client, "/locks/abc");
lock.writeLock().release();

}

catch (Exception e)


{
e.printStackTrace();
}

}

};

r.start();

r.join();

}

---
Originally reported by meni, imported from: Shared read/write lock acquired by one thread cannot be released by another


  • status: Open
  • priority: Major
  • resolution: Unresolved
  • imported: 2025-01-21

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.