Browse Source

Close the Lucene index writer/searcher on a repository rename or delete

tags/v0.9.0
James Moger 12 years ago
parent
commit
e6637cd48c
2 changed files with 28 additions and 0 deletions
  1. 3
    0
      src/com/gitblit/GitBlit.java
  2. 25
    0
      src/com/gitblit/LuceneExecutor.java

+ 3
- 0
src/com/gitblit/GitBlit.java View File

@@ -871,6 +871,9 @@ public class GitBlit implements ServletContextListener {
repository.close();
}
}
// close any open index writer/searcher in the Lucene executor
luceneExecutor.close(repositoryName);
}
/**

+ 25
- 0
src/com/gitblit/LuceneExecutor.java View File

@@ -233,6 +233,31 @@ public class LuceneExecutor implements Runnable {
logger.error(MessageFormat.format("Lucene indexing failure for {0}", name), t);
}
}
/**
* Close the writer/searcher objects for a repository.
*
* @param repositoryName
*/
public void close(String repositoryName) {
try {
IndexWriter writer = writers.remove(repositoryName);
if (writer != null) {
writer.close();
}
} catch (Exception e) {
logger.error("Failed to close index writer for " + repositoryName, e);
}
try {
IndexSearcher searcher = searchers.remove(repositoryName);
if (searcher != null) {
searcher.close();
}
} catch (Exception e) {
logger.error("Failed to close index searcher for " + repositoryName, e);
}
}
/**
* Close all Lucene indexers.

Loading…
Cancel
Save