[
https://issues.apache.org/jira/browse/LUCENE-5738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14019632#comment-14019632
]
Simon Willnauer commented on LUCENE-5738:
-----------------------------------------
bq. Isn't this a valid aspect of the API as documented?
well IMO that is not what is happening. Yes, the lock is released such that
another process can acquire it but the same process can't and that is what
makes this trappy and inconsistent IMO. However I think we have to bring back
the static map to this and ramp up the tests otherwise this is too trappy
> 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
> Assignee: 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");
> }
> // try it again and close it if it fails
> lock = lockFactory.makeLock("LOCK"); // <<<<==== this is a new lock
> if (lock.obtain()) {
> System.out.println("OBTAINED AGAIN");
> } else {
> lock.close(); // <<<<==== this releases the lock we obtained
> 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]