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

[jira] [Closed] (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:all-tabpanel ]

clebert suconic closed ARTEMIS-351.
-----------------------------------
    Resolution: Fixed

> 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
>             Fix For: 1.3.0
>
>
> 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)