Simon Willnauer created LUCENE-5738:
---------------------------------------
Summary: NativeLock is release if Lock is closed after obtain
failed
Key: LUCENE-5738
URL: https://issues.apache.org/jira/browse/LUCENE-5738
Project: Lucene - Core
Issue Type: Bug
Affects Versions: 4.8.1
Reporter: Simon Willnauer
Fix For: 4.9, 5.0
if you obtain the NativeFSLock and try to obtain it again in the same JVM and
close if if it fails another process will be able to obtain it. This is pretty
trappy though. If you execute the main class twice the problem becomes pretty
obvious.
{noformat}
import org.apache.lucene.store.Lock;
import org.apache.lucene.store.NativeFSLockFactory;
import java.io.File;
import java.io.IOException;
public class TestLock {
public static void main(String[] foo) throws IOException, InterruptedException
{
NativeFSLockFactory lockFactory = new NativeFSLockFactory(new
File("/tmp"));
Lock lock = lockFactory.makeLock("LOCK");
if (lock.obtain()) {
System.out.println("OBTAINED");
} else {
lock.close();
System.out.println("FAILED");
}
if (lock.obtain()) {
System.out.println("OBTAINED AGAIN");
} else {
lock.close();
System.out.println("FAILED on Second");
}
Thread.sleep(Integer.MAX_VALUE);
}
}
{noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]