0

Lucene 索引的问题已经有一段时间了。

基本上,当我们尝试发布内容时,索引通常会抛出如下错误:

2020-01-13 22:22:38,068 [P36840/D2/TLucene Merge Thread #0] ERROR Umbraco.Core.UmbracoApplicationBase - Unhandled exception in AppDomain (terminating)
Lucene.Net.Index.MergePolicy+MergeException: Exception of type 'Lucene.Net.Index.MergePolicy+MergeException' was thrown. ---> System.IO.IOException: read past EOF
   at Lucene.Net.Index.IndexWriter.HandleMergeException(Exception t, OneMerge merge)
   at Lucene.Net.Index.IndexWriter.Merge(OneMerge merge)
   at Lucene.Net.Index.ConcurrentMergeScheduler.DoMerge(OneMerge merge)
   at Lucene.Net.Index.ConcurrentMergeScheduler.MergeThread.Run()
   --- End of inner exception stack trace ---
   at Lucene.Net.Index.ConcurrentMergeScheduler.HandleMergeException(Exception exc)
   at Lucene.Net.Index.ConcurrentMergeScheduler.MergeThread.Run()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

结果,我们进入Secure Connection Failed公共站点,内容正在保存但未包含在缓存中,因此它不会显示在网站上。

然后我们无法访问检查管理仪表板来重新启动索引。

错误有时也像这样:

 2019-12-30 14:49:14,895 [P18524/D2/T28] ERROR Umbraco.Core.UmbracoApplicationBase - Unhandled exception in AppDomain (terminating)
System.IO.IOException: Cannot overwrite: D:\Inetpub\vhosts\mysite.com\httpdocs\App_Data\TEMP\ExamineIndexes\Internal\Index\_pe.cfs
   at Lucene.Net.Store.FSDirectory.InitOutput(String name)
   at Lucene.Net.Store.SimpleFSDirectory.CreateOutput(String name)
   at Lucene.Net.Index.CompoundFileWriter.Close()
   at Lucene.Net.Index.DocumentsWriter.CreateCompoundFile(String segment)
   at Lucene.Net.Index.IndexWriter.DoFlushInternal(Boolean flushDocStores, Boolean flushDeletes)
   at Lucene.Net.Index.IndexWriter.DoFlush(Boolean flushDocStores, Boolean flushDeletes)
   at Lucene.Net.Index.IndexWriter.PrepareCommit(IDictionary`2 commitUserData, Boolean internal_Renamed)
   at Lucene.Net.Index.IndexWriter.Commit(IDictionary`2 commitUserData)
   at Examine.LuceneEngine.Providers.LuceneIndexer.IndexCommiter.TimerRelease() in C:\projects\examine-qvx04\src\Examine\LuceneEngine\Providers\LuceneIndexer.cs:line 1711
   at Examine.LuceneEngine.Providers.LuceneIndexer.IndexCommiter.<ScheduleCommit>b__7_0(Object _) in C:\projects\examine-qvx04\src\Examine\LuceneEngine\Providers\LuceneIndexer.cs:line 1663
   at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

在这种情况下,发布内容实际上变得无效。

知道是什么原因吗?以及如何解决?我可以看到索引已损坏,但为什么呢?

我检查了几个类似的问题,例如:

Umbraco 索引错误填充日志

https://issues.apache.org/jira/browse/LUCENENET-527但它们都不是我们的情况 - 我看不到任何 0kB 段文件。

编辑

该错误使整个网站崩溃,导致安全连接失败错误,并且在尝试对内容执行保存时发生(无论是通过 CMS 还是前端站点)。

4

0 回答 0