-
Bug
-
Resolution: Fixed
-
Normal
-
2011-09-28
-
None
-
None
reloadIndex() is called when we have new indexes because it is quicker then initlizing from scratch, but if the reader has changed we don't appear to be closing the older reader
Current Code:
public void reloadIndex() throws CorruptIndexException, IOException { if (this.indexSearcher != null) { IndexReader oldReader = indexSearcher.getIndexReader(); IndexReader newReader = oldReader.reopen(); if (oldReader != newReader) { Similarity similarity = indexSearcher.getSimilarity(); this.indexSearcher = new IndexSearcher(newReader); this.indexSearcher.setSimilarity(similarity); this.setLastServerUpdatedDate(); } } }
New Code:
public void reloadIndex() throws CorruptIndexException, IOException { if (this.indexSearcher != null) { IndexReader oldReader = indexSearcher.getIndexReader(); IndexReader newReader = oldReader.reopen(); if (oldReader != newReader) { Similarity similarity = indexSearcher.getSimilarity(); this.indexSearcher = new IndexSearcher(newReader); this.indexSearcher.setSimilarity(similarity); this.setLastServerUpdatedDate(); indexSearcher.close(); } } }