You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/01/19 13:14:39 UTC

[jira] [Commented] (ARTEMIS-351) Report an Exception if a journal file cannot be created rather than blocking forever

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

ASF GitHub Bot commented on ARTEMIS-351:
----------------------------------------

GitHub user tomjenkinson opened a pull request:

    https://github.com/apache/activemq-artemis/pull/326

    ARTEMIS-351 throw an exception if we get an IOException

    https://issues.apache.org/jira/browse/ARTEMIS-351

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/tomjenkinson/activemq-artemis JBEAP-1987

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/activemq-artemis/pull/326.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #326
    
----
commit 33128e1eb845c399b3735120a3b53233adfdc475
Author: Tom Jenkinson <to...@redhat.com>
Date:   2016-01-15T20:55:06Z

    ARTEMIS-351 throw an exception if we get an IOException

----


> Report an Exception if a journal file cannot be created rather than blocking forever
> ------------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-351
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-351
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>            Reporter: Tom Jenkinson
>
> The architecture of the journal component is such that the next journal file to create fails (executed async) then the application thread will block forever in an append call and the journal will become unusable during that JVM execution. 
> The error was reported as a warning but the loop is not broken out of after a recent change (ARTEMIS-321), a callback IO handler will now be invoked and the business logic can elect to make a decision such as shutdown. 
> However, if you know that the error may be transient, unless this callback throws an unhandled exception the journal will remain blocked forever. Even if an unhandled exception is thrown from your handler to unblock the thread, there is an issue in that subsequent calls to appendRecord will add the file name into the queue of files to create every time it is invoked. This can easily result in the same file name appearing twice in the queue. Once this happens, the logic to check if a record does not fit in the current file then it will fit in the next file triggers and an exception is thrown.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)