[ 
https://issues.apache.org/jira/browse/LUCENENET-442?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andy Twidle updated LUCENENET-442:
----------------------------------

    Description: 
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()


  was:
The ParallelMultiSearcher doesn't allow non-IOException exceptions 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()



> 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

        

Reply via email to