diff --git a/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs b/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs
index 3cc7908dfd..34ad71d2f9 100644
--- a/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs
+++ b/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs
@@ -5,6 +5,8 @@ using Examine.LuceneEngine.Providers;
using Examine.Providers;
using Lucene.Net.Index;
using Lucene.Net.Search;
+using Lucene.Net.Store;
+using Umbraco.Core.Logging;
namespace Umbraco.Web.Search
{
@@ -21,9 +23,17 @@ namespace Umbraco.Web.Search
///
public static int GetIndexDocumentCount(this LuceneIndexer indexer)
{
- using (var reader = indexer.GetIndexWriter().GetReader())
+ try
{
- return reader.NumDocs();
+ using (var reader = indexer.GetIndexWriter().GetReader())
+ {
+ return reader.NumDocs();
+ }
+ }
+ catch (AlreadyClosedException)
+ {
+ LogHelper.Warn(typeof(ExamineExtensions), "Cannot get GetIndexDocumentCount, the writer is already closed");
+ return 0;
}
}
@@ -34,9 +44,19 @@ namespace Umbraco.Web.Search
///
public static int GetIndexFieldCount(this LuceneIndexer indexer)
{
- using (var reader = indexer.GetIndexWriter().GetReader())
+ //TODO: check for closing! and AlreadyClosedException
+
+ try
{
- return reader.GetFieldNames(IndexReader.FieldOption.ALL).Count;
+ using (var reader = indexer.GetIndexWriter().GetReader())
+ {
+ return reader.GetFieldNames(IndexReader.FieldOption.ALL).Count;
+ }
+ }
+ catch (AlreadyClosedException)
+ {
+ LogHelper.Warn(typeof(ExamineExtensions), "Cannot get GetIndexFieldCount, the writer is already closed");
+ return 0;
}
}
@@ -47,9 +67,17 @@ namespace Umbraco.Web.Search
///
public static bool IsIndexOptimized(this LuceneIndexer indexer)
{
- using (var reader = indexer.GetIndexWriter().GetReader())
+ try
{
- return reader.IsOptimized();
+ using (var reader = indexer.GetIndexWriter().GetReader())
+ {
+ return reader.IsOptimized();
+ }
+ }
+ catch (AlreadyClosedException)
+ {
+ LogHelper.Warn(typeof(ExamineExtensions), "Cannot get IsIndexOptimized, the writer is already closed");
+ return false;
}
}
@@ -74,9 +102,17 @@ namespace Umbraco.Web.Search
///
public static int GetDeletedDocumentsCount(this LuceneIndexer indexer)
{
- using (var reader = indexer.GetIndexWriter().GetReader())
+ try
{
- return reader.NumDeletedDocs();
+ using (var reader = indexer.GetIndexWriter().GetReader())
+ {
+ return reader.NumDeletedDocs();
+ }
+ }
+ catch (AlreadyClosedException)
+ {
+ LogHelper.Warn(typeof(ExamineExtensions), "Cannot get GetDeletedDocumentsCount, the writer is already closed");
+ return 0;
}
}
}