Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-305

[PATCH] Lock Framework - allows custom lock mechanism


    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Duplicate
    • None
    • 2.1
    • core/store
    • None
    • Operating System: other
      Platform: All

    • 32143


      Proposal: Pluggable Lock Framework for Lucene
      Date: Nov 2004
      Developer: Jeff Patterson (jeffATwebdoyen.com - http://www.webdoyen.com)


      Abstract: A framework to allow Lucene users to override the default
      FileSystem locking mechanism with a custom lock mechanism.

      A Lucene user may develop a new class that extends
      org.apache.lucene.store.Lock and implement bodies for the following
      public boolean obtain() - to obtain custom lock
      public boolean isLocked() - to detect custom lock
      public void release() - to release custom lock

      NOTE: When implementing these methods, the developer should make sure to
      use the this.getLockName() method on the Lock to identify which lock
      is being manipulated (see Modified Files below for more).

      After developed, the new class must be added to the classpath (along
      with any other supporting classes/libraries needed by the new class),
      and the Lucene framework must be alerted of the new class by way of
      the "org.apache.lucene.lockClass" -D System property. Example:

      java -Dorg.apache.lucene.lockClass=foo.MyCustomLocker LuceneTest


      Modified Files: The following files were modified to support
      this framework (DIFF files at end):

      • org.apache.lucene.store.Lock
        The member "lockName" and an accompanying protected getter and
        setter were added to this class to support naming the lock. This
        is transparent to the default lock mechanism and is only useful
        when writing a custom lock.
      • org.apache.lucene.store.FSDirectory
        Instead of instantiating a default Lock, this class now checks
        to see if an overridden Lock mechanism is provided, and if so
        asks the LockFactory (see below) to provide an overridden Lock

      New Files: The following files were added to support this framework:

      • org.apache.lucene.store.LockFactory
        This class is used to reflect and instantiate by name the custom
        Lock implementation. Error handing should be modified in this
        class, but that would have required a more extensive code overhaul.
        The javadocs for the LockFactory contain a skeleton Java file for
        a custom lock implementation.



        1. ASF.LICENSE.NOT.GRANTED--FSDirectory_patch_file.txt
          3 kB
          Jeff Patterson
        2. ASF.LICENSE.NOT.GRANTED--FSDirectory.java
          15 kB
          Jeff Patterson
        3. ASF.LICENSE.NOT.GRANTED--Lock_patch_file.txt
          1 kB
          Jeff Patterson
        4. ASF.LICENSE.NOT.GRANTED--Lock.java
          4 kB
          Jeff Patterson
        5. ASF.LICENSE.NOT.GRANTED--LockFactory.java
          3 kB
          Jeff Patterson
        6. ASF.LICENSE.NOT.GRANTED--MySQLLocker.java
          6 kB
          Jeff Patterson

        Issue Links



              yseeley@gmail.com Yonik Seeley
              lucene-list-dev@webdoyen.com Jeff Patterson
              2 Vote for this issue
              1 Start watching this issue