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>