[
https://issues.apache.org/jira/browse/LUCENE-5738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14019319#comment-14019319
]
Uwe Schindler commented on LUCENE-5738:
---------------------------------------
bq. Uwe Schindler I think the JVM is still buggy here, and we need that hacky
static map back maybe?
The static map was there to not obtain the lock 2 times from the same JVM. It
could help to redo this, but I am not yet sure, what the real bug is. Does this
also release the lock of another process? If yes, its a problem of the O/S.
> 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]