Tom Jenkinson created ARTEMIS-351:
-------------------------------------
Summary: 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)