Umbraco V6.1.3 Lucene Index Corruption

青春壹個敷衍的年華 提交于 2019-12-12 17:30:06

问题


Just upgraded an Umbraco V6.1.1 site to V6.1.3. All went well on my workstation. Copied the files up to the web server after deleting all that was there, did the same with the database. Set all the directory permissions and ran the site. Site (which is MVC) runs BUT with two issues which I can't fathom and would really appreciate some help with.

One page errors with a Read Past EOF error. This is the view it's trying to run. The error is on link in Bold.

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@{
    Layout = "BasePage.cshtml";
}
          <div class="row-fluid">
              <div class="span12">
                  <h1>@Umbraco.Field("pageName")</h1>
                  @Umbraco.Field("pageText")
              </div>
            </div>
          <div class="row-fluid">
              <div class="span12">
                @foreach (var page in Model.Content.Children) {
                    <section class="well">
                    <h3>@page.Name</h3>
                    @if(page.Children.Count() > 0) {
                        <ul>
                        **@foreach (var pub in page.Children) {**
                           <li><a href="@Umbraco.Media(pub.GetPropertyValue("publication")).Url" title="@pub.Name" target="_blank">@pub.Name</a></li>
                        }
                        </ul>
                    }
                    </section>
                }
                  </div>
          </div>

The Stack Trace is

[IOException: read past EOF]
   Lucene.Net.Index.FindSegmentsFile.Run(IndexCommit commit) +2040
   Lucene.Net.Index.DirectoryReader.Open(Directory directory, IndexDeletionPolicy deletionPolicy, IndexCommit commit, Boolean readOnly, Int32 termInfosIndexDivisor) +57
   Lucene.Net.Search.IndexSearcher..ctor(Directory path, Boolean readOnly) +29
   Examine.LuceneEngine.Providers.LuceneSearcher.ValidateSearcher(Boolean forceReopen) +136

The other (I think related issue) is in the CMS, when opening the Developer Section, I get a javascript alert with a huge error message in it relating to Lucene

error: {"Message":"An error has occurred.","ExceptionMessage":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.","ExceptionType":"System.InvalidOperationException","StackTrace":null,"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"Could not create an index searcher with the supplied lucene directory","ExceptionType":"System.ApplicationException","StackTrace":"   at Examine.LuceneEngine.Providers.LuceneSearcher.ValidateSearcher(Boolean forceReopen)\r\n   at Examine.LuceneEngine.Providers.LuceneSearcher.GetSearcher()\r\n   at Umbraco.Web.Search.ExamineExtensions.GetIndexReaderForSearcher(BaseLuceneSearcher searcher)\r\n   at Umbraco.Web.Search.ExamineExtensions.GetIndexDocumentCount(LuceneIndexer indexer)\r\n   at Umbraco.Web.WebServices.ExamineManagementApiController.CreateModel(BaseIndexProvider indexer)\r\n   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\r\n   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)\r\n   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)\r\n   at Newtonsoft.Json.Serialization.JsonArrayContract.CreateWrapper(Object list)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value)\r\n   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value)\r\n   at System.Net.Http.Formatting.JsonMediaTypeFormatter.<>c__DisplayClassd.<WriteToStreamAsync>b__c()\r\n   at System.Threading.Tasks.TaskHelpers.RunSynchronously(Action action, CancellationToken token)","InnerException":{"Message":"An error has occurred.","ExceptionMessage":"read past EOF","ExceptionType":"System.IO.IOException","StackTrace":"   at Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run(IndexCommit commit)\r\n   at Lucene.Net.Index.DirectoryReader.Open(Directory directory, IndexDeletionPolicy deletionPolicy, IndexCommit commit, Boolean readOnly, Int32 termInfosIndexDivisor)\r\n   at Lucene.Net.Search.IndexSearcher..ctor(Directory path, Boolean readOnly)\r\n   at Examine.LuceneEngine.Providers.LuceneSearcher.ValidateSearcher(Boolean forceReopen)"}}}

Have tried the Umbraco forum but have had no replies. If it's a no-brainer, I still need to know of course.

Any advice would be greatly appreciated.


回答1:


I'd back up the indexes (they are in app_data\temp\....), and delete them and restart the app pool.

Umbraco will rebuild them (can take 5-10 mins for a HUGE database - 150k nodes) on next start up.

It might be a corrupt index (in which case, grab the backup and use Luke on it, see if it is broken), or possibly that the version of the index changed - which is the same result.

https://code.google.com/p/luke/



来源:https://stackoverflow.com/questions/18110298/umbraco-v6-1-3-lucene-index-corruption

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!