[ https://issues.apache.org/jira/browse/CURATOR-79?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Orcun Simsek updated CURATOR-79: -------------------------------- Description: If the current thread is interrupted while acquiring the InterProcessMutex, a new node for the lock is created, InterruptException is thrown, and node is not deleted afterwards. Thus causing a deadlock. Curator should check the Interrupted state, and do the proper clean up. {code} @Test public void testInterr() throws Exception { CuratorFramework client = CuratorFrameworkFactory.builder() .connectString("127.0.0.1:2181") .retryPolicy(new RetryNTimes(10, 1000)) .build(); client.start(); Thread.currentThread().interrupt(); final InterProcessMutex lock = new InterProcessMutex(client, "/testInterruption"); try { lock.acquire(); lock.release(); } catch (InterruptedException e) { e.printStackTrace(); if (lock.isAcquiredInThisProcess()) { lock.release(); } } assertTrue(lock.acquire(10, TimeUnit.MILLISECONDS)); } {code} was: If the current thread is interrupted while acquiring the InterProcessMutex, a new node for the lock is created, InterruptException is thrown, and node is not deleted afterwards. Thus causing a deadlock. Curator should check the Interrupted state, and do the proper clean up. > InterProcessMutex doesn't clean up after interrupt > -------------------------------------------------- > > Key: CURATOR-79 > URL: https://issues.apache.org/jira/browse/CURATOR-79 > Project: Apache Curator > Issue Type: Bug > Reporter: Orcun Simsek > Assignee: Jordan Zimmerman > Priority: Blocker > > If the current thread is interrupted while acquiring the InterProcessMutex, a > new node for the lock is created, InterruptException is thrown, and node is > not deleted afterwards. Thus causing a deadlock. > Curator should check the Interrupted state, and do the proper clean up. > {code} > @Test > public void testInterr() throws Exception { > CuratorFramework client = CuratorFrameworkFactory.builder() > .connectString("127.0.0.1:2181") > .retryPolicy(new RetryNTimes(10, 1000)) > .build(); > client.start(); > Thread.currentThread().interrupt(); > final InterProcessMutex lock = new InterProcessMutex(client, > "/testInterruption"); > try { > lock.acquire(); > lock.release(); > } catch (InterruptedException e) { > e.printStackTrace(); > if (lock.isAcquiredInThisProcess()) { > lock.release(); > } > } > assertTrue(lock.acquire(10, TimeUnit.MILLISECONDS)); > } > {code} -- This message was sent by Atlassian JIRA (v6.1#6144)