[ https://issues.apache.org/jira/browse/LUCENE-5738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14019688#comment-14019688 ]
Michael McCandless commented on LUCENE-5738: -------------------------------------------- +1, looks great. Thanks Simon! > 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 > > Attachments: LUCENE-5738.patch, LUCENE-5738.patch > > > 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: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org