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

[PATCH] Add an IndexReader implementation that frees resources when idle and refreshes itself when stale

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Won't Fix
    • None
    • None
    • core/index
    • None
    • Operating System: All
      Platform: All

    • 20024

    Description

      Here is a little something I worked on this weekend that I wanted to contribute
      back as I think others might find it very useful.

      I extended IndexReader and added support for configuring an idle timeout and
      refresh interval.

      It uses a monitoring thread to watch for the reader going idle. When the reader
      goes idle it is closed. When the index is read again it is re-opened.

      It uses another thread to periodically check when the reader needs to be
      refreshed due to a change to index. When the reader is stale, it closes the
      reader and reopens the index.

      It is acually delegating all the work to another IndexReader implementation and
      just handling the threading and synchronization. When it closes a reader, it
      delegates the close to another thread that waits a bit (configurable how long)
      before actually closing the reader it was delegating to. This gives any
      consumers of the original reader a chance to finish up their last action on the
      reader.

      This implementation sacrifices a little bit of speed since there is a bit more
      synchroniztion to deal with and the delegation model puts extra calls on the
      stack, but it should provide long running applications that have idle periods
      or frequently changing indices from having to open and close readers all the
      time or hold open unused resources.

      Attachments

        Activity

          People

            Unassigned Unassigned
            eisakson Eric Isakson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: