Purshotam Shah created CURATOR-486:
--------------------------------------
Summary: InterProcessMutex.release fails to remove a lock on
retries.
Key: CURATOR-486
URL: https://issues.apache.org/jira/browse/CURATOR-486
Project: Apache Curator
Issue Type: Bug
Reporter: Purshotam Shah
Assignee: Jordan Zimmerman
We were planning to build a release lock retry, looks like
InterProcessMutex.release don't support it.
It removes currentThread entry from threadData, even if there is an issue
releasing lock.
{code:title=InterProcessMutex.java}
@Override
public void release() throws Exception
{
/*
Note on concurrency: a given lockData instance
can be only acted on by a single thread so locking isn't necessary
*/
Thread currentThread = Thread.currentThread();
LockData lockData = threadData.get(currentThread);
if ( lockData == null )
{
throw new IllegalMonitorStateException("You do not own the lock: " + basePath);
}
int newLockCount = lockData.lockCount.decrementAndGet();
if ( newLockCount > 0 )
{
return;
}
if ( newLockCount < 0 )
{
throw new IllegalMonitorStateException("Lock count has gone negative for lock:
" + basePath);
}
try
{
internals.releaseLock(lockData.lockPath);
}
finally
{
threadData.remove(currentThread);
}
}
{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)