[
https://issues.apache.org/jira/browse/CURATOR-347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15453786#comment-15453786
]
Meni Hillel commented on CURATOR-347:
-------------------------------------
Also should add, this works perfectly fine with InterProcessSemaphoreMutex.
Question is why are these two behave different...?
I need non-reentrant, read/write lock which are thread agnostic.
> Shared read/write lock acquired by one thread cannot be released by another
> ---------------------------------------------------------------------------
>
> Key: CURATOR-347
> URL: https://issues.apache.org/jira/browse/CURATOR-347
> Project: Apache Curator
> Issue Type: Bug
> Components: Recipes
> Affects Versions: 3.2.0
> Reporter: Meni Hillel
> Fix For: awaiting-response
>
>
> 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();
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)