curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Meni Hillel (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CURATOR-347) Shared read/write lock acquired by one thread cannot be released by another
Date Wed, 31 Aug 2016 23:33:21 GMT
Meni Hillel created CURATOR-347:
-----------------------------------

             Summary: 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)

Mime
View raw message