You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2017/03/07 12:34:38 UTC

[jira] [Resolved] (AMQ-6606) Journal partial write can result in batch corruption on restart

     [ https://issues.apache.org/jira/browse/AMQ-6606?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully resolved AMQ-6606.
-----------------------------
    Resolution: Fixed

the fix is refined to just sync batches such that index updates from async writes do not get reused. In the sync case, the index is not updated till completion.

> Journal partial write can result in batch corruption on restart
> ---------------------------------------------------------------
>
>                 Key: AMQ-6606
>                 URL: https://issues.apache.org/jira/browse/AMQ-6606
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: KahaDB
>    Affects Versions: 5.14.0
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>             Fix For: 5.15.0, 5.14.4
>
>
> Recovery checking on kahadb will ignore a partial journal write at the end of the journal. However repeated write errors increment the write offset and if a subsequent write succeeds recovery fails reporting a corrupt block.
> {code}
>  MessageDatabase  | emq.store.kahadb.MessageDatabase | Detected corrupt journal files. [34:43883209 >= key < 34:47226069]
> {code}
> One scenario is write failure for no space followed by gc which allows subsequent writes to complete.
> A failed write or sync should fail with an exception and should revert any offset increment such that a subsequent write reuses that offset, avoiding a partial write corruption. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)