IndexReader.isIndexCurrent()==false -> IndexReader.reopen() -> still index not 
current
--------------------------------------------------------------------------------------

                 Key: LUCENE-1385
                 URL: https://issues.apache.org/jira/browse/LUCENE-1385
             Project: Lucene - Java
          Issue Type: Bug
          Components: Index
    Affects Versions: 2.3.2
         Environment: Linux, Solaris, Windows XP
            Reporter: Uwe Schindler


I found a strange error occurring with IndexReader.reopen. It is not always 
reproduceable, it only happens sometimes, but strangely on all my computers 
with different platforms at the same time. Maybe has something to to with the 
timestamp used in index versions.

I have a search server using an IndexReader, that is openend in webapp startup 
and should stay open. Every half an hour this web application checks, if the 
index is still current using IndexReader.isCurrent(). When a parallel job that 
indexes documents (in another virtual machine) and modifies the indexes, 
isCurrent() return TRUE. The half-hourly cron-job then uses 
IndexReader.reopen() to reopen the index. But sometimes, directly after 
reopen() the Index is still not current (and no updates occur). Again calling 
reopen does not change it, too. Searching on the index shows all new/updated 
documents, but isCurrent() still return false. The problem with this is, that 
now the index is reopened all the time, because the detection of a current 
index does not work any more.

I have now a workaround in my code to handle this: After calling 
IndexReader.reopen(), I test for IndexReader.isCurrent(), and if not, I close 
it hard and open a new instance.

Most times IndexReader.reopen works correct, but sometimes this error occurs. 
Looking into the code of reopen(), I realized, that there is some extra check, 
if the Index has modifications, and if yes the reopen call returns the original 
reader (this maybe the problem I have). But the IndexReader is only used for 
searching, no updates occur.

My questions: Why is there this check for modifications in reopen()? Why does 
this happen only at certain times on all my servers with different platforms?
I want to use reopen, because in future, when the new FieldCache will be 
reopen-aware and does not everytime rebuild the full cache, it will be very 
important, to have this fixed. At the moment, I have no problem with the case, 
that reopen may fail and I have to do a rough reopen.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to