高負荷の Sitecore ソリューションでは、Lucene インデックスを使用した検索操作が次のエラーで失敗することがあります。
There was a problem while running getting number of hits records. Details: Non-negative number required.
Parameter name: capacity
at System.Collections.Hashtable..ctor(Int32 capacity, Single loadFactor)
at System.Collections.Hashtable.Clone()
at SupportClass.WeakHashTable.Clean()
at SupportClass.WeakHashTable.CleanIfNeeded()
at SupportClass.WeakHashTable.set_Item(Object key, Object value)
at Lucene.Net.Search.FieldCacheImpl.Cache.Get(IndexReader reader, Entry key)
at Lucene.Net.Search.FieldCacheImpl.GetStringIndex(IndexReader reader, String field)
at Lucene.Net.Search.FieldComparator.StringOrdValComparator.SetNextReader(IndexReader reader, Int32 docBase)
at Lucene.Net.Search.TopFieldCollector.OneComparatorNonScoringCollector.SetNextReader(IndexReader reader, Int32 docBase)
at Lucene.Net.Search.IndexSearcher.Search(Weight weight, Filter filter, Collector collector)
at Lucene.Net.Search.IndexSearcher.Search(Weight weight, Filter filter, Int32 nDocs, Sort sort, Boolean fillFields)
at Lucene.Net.Search.IndexSearcher.Search(Weight weight, Filter filter, Int32 nDocs, Sort sort)
at Lucene.Net.Search.Hits.GetMoreDocs(Int32 min)
at Lucene.Net.Search.Hits..ctor(Searcher s, Query q, Filter f, Sort o)
at Lucene.Net.Search.Searcher.Search(Query query, Sort sort)
上記のエラーは、同時実行の問題が原因で発生する可能性があり、Lucene.NET バージョン 2.9.4 で使用される非スレッド セーフな WeakHashTable コレクションが原因で発生する可能性があります。
本事象を解決するには、次のパッチを適用してください。