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)

Reply via email to