lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Willnauer (JIRA)" <j...@apache.org>
Subject [jira] [Created] (LUCENE-5738) NativeLock is release if Lock is closed after obtain failed
Date Thu, 05 Jun 2014 16:04:01 GMT
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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message