You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucenenet.apache.org by "Laura Nash (JIRA)" <ji...@apache.org> on 2019/01/28 10:29:00 UTC

[jira] [Comment Edited] (LUCENENET-603) ConcurrentMergeScheduler crashes the application if a transient error occurs

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

Laura Nash edited comment on LUCENENET-603 at 1/28/19 10:28 AM:
----------------------------------------------------------------

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 the 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.


was (Author: laura.m.nash):
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)