You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by ot...@apache.org on 2002/06/21 16:57:46 UTC
cvs commit: jakarta-lucene/src/java/org/apache/lucene/store FSDirectory.java
otis 2002/06/21 07:57:46
Modified: . TODO.txt
src/java/org/apache/lucene/store FSDirectory.java
Log:
- 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'.
Revision Changes Path
1.2 +4 -6 jakarta-lucene/TODO.txt
Index: TODO.txt
===================================================================
RCS file: /home/cvs/jakarta-lucene/TODO.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TODO.txt 27 May 2002 23:56:54 -0000 1.1
+++ TODO.txt 21 Jun 2002 14:57:46 -0000 1.2
@@ -32,10 +32,8 @@
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);
1.7 +18 -3 jakarta-lucene/src/java/org/apache/lucene/store/FSDirectory.java
Index: FSDirectory.java
===================================================================
RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/store/FSDirectory.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FSDirectory.java 15 Mar 2002 05:52:57 -0000 1.6
+++ FSDirectory.java 21 Jun 2002 14:57:46 -0000 1.7
@@ -77,6 +77,8 @@
* 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 @@
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() {
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit: jakarta-lucene/src/java/org/apache/lucene/store FSDirectory.java
Posted by Doug Cutting <cu...@lucene.com>.
otis@apache.org wrote:
[ ... ]
> + private static final boolean DISABLE_LOCKS = Boolean.getBoolean("disableLocks");
[ ... ]
> 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();
> }
It would be simpler to just define DISABLE_LOCKS as:
private static final boolean DISABLE_LOCKS
Boolean.getBoolean("disableLocks") || Constants.JAVA_1_1;
Then obtain() and release() can just have one check, of the form:
if (DISABLE_LOCKS)
...
Also, documentation of the "disableLocks" property should be added to
FSDirectory's javadoc. We don't want undocumented features!
Doug
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>