[
https://issues.apache.org/jira/browse/LUCENENET-442?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13097245#comment-13097245
]
Andy Twidle commented on LUCENENET-442:
---------------------------------------
Fantastic, thanks Digy!
> ParallelMultiSearcher threads don't handle all exceptions
> ---------------------------------------------------------
>
> Key: LUCENENET-442
> URL: https://issues.apache.org/jira/browse/LUCENENET-442
> Project: Lucene.Net
> Issue Type: Bug
> Components: Lucene.Net Core
> Affects Versions: Lucene.Net 2.9.2
> Reporter: Andy Twidle
> Assignee: Digy
> Fix For: Lucene.Net 2.9.4, Lucene.Net 2.9.4g
>
> Attachments: LUCENENET-442.patch
>
>
> The ParallelMultiSearcher doesn't allow non-IOException exceptions thrown by
> its threads to be managed by the calling application.
> LUCENENET-388 worked around one specific example of this, but any genuine
> Lucene exception (eg: BooleanQuery.TooManyClauses) will also fall foul of
> this pattern.
> In our specific instance we could treat the symptoms and up the max clause
> count, but I'm sure there will be more. Could the System.IOException be
> generalised to System.Exception? Or would that be too much deviation from
> the Java code base?
> --
> Example stack trace of an exception thrown by a Searcher executed:
> Framework Version: v4.0.30319
> Description: The process was terminated due to an unhandled exception.
> Exception Info: Lucene.Net.Search.BooleanQuery+TooManyClauses
> Stack:
> at Lucene.Net.Search.BooleanQuery.Add(Lucene.Net.Search.BooleanClause)
> at Lucene.Net.Search.BooleanQuery.Add(Lucene.Net.Search.Query, Occur)
> at Lucene.Net.Search.PrefixQuery.Rewrite(Lucene.Net.Index.IndexReader)
> at Lucene.Net.Search.BooleanQuery.Rewrite(Lucene.Net.Index.IndexReader)
> at Lucene.Net.Search.IndexSearcher.Rewrite(Lucene.Net.Search.Query)
> at Lucene.Net.Search.Query.Weight(Lucene.Net.Search.Searcher)
> at Lucene.Net.Search.Searcher.CreateWeight(Lucene.Net.Search.Query)
> at Lucene.Net.Search.Searcher.Search(Lucene.Net.Search.Query,
> Lucene.Net.Search.Filter, Lucene.Net.Search.HitCollector)
> at Lucene.Net.Search.Searcher.Search(Lucene.Net.Search.Query,
> Lucene.Net.Search.HitCollector)
> at Lucene.Net.Search.QueryWrapperFilter.Bits(Lucene.Net.Index.IndexReader)
> at
> Lucene.Net.Search.CachingWrapperFilter.Bits(Lucene.Net.Index.IndexReader)
> at Lucene.Net.Search.IndexSearcher.Search(Lucene.Net.Search.Weight,
> Lucene.Net.Search.Filter, Lucene.Net.Search.HitCollector)
> at Lucene.Net.Search.IndexSearcher.Search(Lucene.Net.Search.Weight,
> Lucene.Net.Search.Filter, Int32)
> at Lucene.Net.Search.MultiSearcherThread.Run()
> at
> System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,
> System.Threading.ContextCallback, System.Object, Boolean)
> at
> System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,
> System.Threading.ContextCallback, System.Object)
> at System.Threading.ThreadHelper.ThreadStart()
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira