lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Bamford <Chris.Bamf...@scalix.com>
Subject How to test if an IndexReader is still open?
Date Thu, 01 Oct 2009 12:52:13 GMT
Hi,

In an attempt to balance searching efficiency against the number of open file descriptors
on my system, I cache IndexSearchers with a "last used" timestamp.  A background cache manager
thread then periodically checks the cache for any that haven't been used in a while and removes
them from the cache.  In so doing, it also closes their underlying IndexReaders to force the
files to be released.  This works very well, but I have hit a very occasional race condition
where search code grabs a searcher from the cache just as it is about to expire - causing
an "AlreadyClosed" exception.  Rather than attempt to synchronize my code, I figured it might
be less expensive if search() (I have extended IndexSearcher) were to check that the underlying
IndexReader is still open - and reopen() if necessary.  However, I cannot find a way to detect
this ...  is there a way?  Failing that, what is the cost of just issuing a reopen() anyway?

Thanks for any thoughts / ideas.

- Chris


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message