[ 
https://issues.apache.org/jira/browse/LUCENENET-603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16753875#comment-16753875
 ] 

Laura Nash commented on LUCENENET-603:
--------------------------------------

No, that isn't the behaviour I am observing.  The exception thrown on the 
background thread crashes the application.  No further activity is possible.  
This has been standard behaviour in .NET since 2.0: 
[https://docs.microsoft.com/en-us/dotnet/standard/threading/exceptions-in-managed-threads].

I'm not that familiar with Java but I believe it may have different behaviour 
for unhandled exceptions in threads which would explain why this code is fine 
in the original lucene codebase.

> ConcurrentMergeScheduler crashes the application if a transient error occurs
> ----------------------------------------------------------------------------
>
>                 Key: LUCENENET-603
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-603
>             Project: Lucene.Net
>          Issue Type: Improvement
>          Components: Lucene.Net Core
>    Affects Versions: Lucene.Net 3.0.3, Lucene.Net 4.8.0
>            Reporter: Laura Nash
>            Priority: Major
>              Labels: easyfix, newbie
>
> We are using Lucene.NET 3.0.3 within a larger application hosted in a Windows 
> Service.  The Lucene.NET use occurs in a background processing thread and is 
> non-critical, it shouldn't ever cause the Windows Service to crash.
> Currently if an error occurs (even a very transient error) within our 
> implementation of Lucene.Net.Store.BufferedIndexOutput FlushBuffer() then our 
> Windows Service crashes.  
> This is because ConcurrentMergeScheduler.HandleMergeException throws an 
> exception, even though it is being called inside a background thread 
> generated within the Lucene code and so the exception thrown can never be 
> caught and will always crash the application.  The code and comments around 
> this seem to suggest this is not expected to crash out (maybe due to the port 
> from java and java behaves differently from .NET for this?).
> Handling all errors inside our FlushBuffer implementation causes the file to 
> become corrupted as the flush is considered a success.
> I think this throw should be removed.  We have commented it out and this 
> appears to have had no detrimental affect.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to