- Added the ability to disable creation of locks on the file system, in order

to allow Lucene to be used on read-only media.
  To disable lock creation set 'disableLocks' system property to 'true'.
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@149782 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Otis Gospodnetic 2002-06-21 14:57:46 +00:00
parent 19a3915b3c
commit 4cee88c438
2 changed files with 20 additions and 7 deletions

View File

@ -32,10 +32,8 @@ $Revision$
http://nagoya.apache.org/eyebrowse/ReadMsg?listName=lucene-dev@jakarta.apache.org&msgId=114749
http://nagoya.apache.org/eyebrowse/ReadMsg?listName=lucene-dev@jakarta.apache.org&msgId=114757
- Add to FSDirectory the ability to specify where lock files live and
to disable the use of lock files altogether (for read-only media).
c.f.
http://nagoya.apache.org/eyebrowse/BrowseList?listName=lucene-user@jakarta.apache.org&by=thread&from=57011
- Add to FSDirectory the ability to disable the use of lock files altogether (for read-only media).
Status: COMPLETED
- Add some requested methods:
String[] Document.getValues(String fieldName);

View File

@ -77,6 +77,8 @@ final public class FSDirectory extends Directory {
* require Java 1.2. Instead we use refcounts... */
private static final Hashtable DIRECTORIES = new Hashtable();
private static final boolean DISABLE_LOCKS = Boolean.getBoolean("disableLocks");
/** Returns the directory instance for the named location.
*
* <p>Directories are cached, so that, for a given canonical path, the same
@ -211,18 +213,31 @@ final public class FSDirectory extends Directory {
return new FSInputStream(new File(directory, name));
}
/** Construct a {@link Lock}.
/**
* Constructs a {@link Lock} with the specified name.
* If JDK 1.1 is used the lock file is not really made.
* If system property <I>disableLocks</I> has the value of 'true'
* the lock will not be created. Assigning this property any other value
* will <B>not</B> prevent creation of locks.
* <BR>
* This is useful for using Lucene on read-only medium, such as CD-ROM.
*
* @param name the name of the lock file
* @return an instance of <code>Lock</code> holding the lock
*/
public final Lock makeLock(String name) {
final File lockFile = new File(directory, name);
return new Lock() {
public boolean obtain() throws IOException {
if (Constants.JAVA_1_1) return true; // locks disabled in jdk 1.1
if (Constants.JAVA_1_1)
return true; // locks disabled in jdk 1.1
if (DISABLE_LOCKS)
return true;
return lockFile.createNewFile();
}
public void release() {
if (Constants.JAVA_1_1) return; // locks disabled in jdk 1.1
if (Constants.JAVA_1_1)
return; // locks disabled in jdk 1.1
lockFile.delete();
}
public String toString() {