[
https://issues.apache.org/jira/browse/BOOKKEEPER-572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13634019#comment-13634019
]
Ivan Kelly commented on BOOKKEEPER-572:
---
{quote}
the problem is you only get the exception after added the entry to journal. so
the entry lives in journal. when bookie started, replaying this journal tried
to add the entry to ledger storage, but it would failed. so the bookie could
not start.
{quote}
And this can be handled at that point. We should separate what we consider
writing errors (errors with the write medium) and data errors (errors with the
entry). Data errors can be logged as a warn. Whats more, we can simply
prevalidate the entries. The contents of an entry should really be opaque to
the ledger storage, it's an unfortunate historical fact that they are not. The
ledger storage tries to read the ledger id the entry id and stores based on
this. We can prevalidate to ensure that everything we pass to ledger storage
has at least 16 bytes of length.
{quote}the COW is just for ledger index. it works for both skiplists and
interleaved.{quote}
This is true. It would mean either having a separate set of pages for read and
write, or that we have a lookaside cache for index entries. Have you done any
implementation on this? I think it would be a good thing to have whether this
goes in or not. If so, have you measured how much memory it uses?
Make the journal a write ahead log
--
Key: BOOKKEEPER-572
URL: https://issues.apache.org/jira/browse/BOOKKEEPER-572
Project: Bookkeeper
Issue Type: Bug
Reporter: Ivan Kelly
Assignee: Ivan Kelly
Fix For: 4.3.0
Attachments:
0001-BOOKKEEPER-572-Write-to-the-journal-before-writing-t.patch,
0001-BOOKKEEPER-572-Write-to-the-journal-before-writing-t.patch,
0001-BOOKKEEPER-572-Write-to-the-journal-before-writing-t.patch,
0001-BOOKKEEPER-572-Write-to-the-journal-before-writing-t.patch,
0003-BOOKKEEPER-572-Write-to-the-journal-before-writing-t.patch,
0003-BOOKKEEPER-572-Write-to-the-journal-before-writing-t.patch,
BookieServer-2013-02-22.snapshot
A bookie adds to the LedgerStorage before writing to the journal. This is the
fundamental problem behind BOOKKEEPER-447 and blocks a nice solution to
BOOKKEEPER-530. By writing to the memory state before the journal, we exposed
ourselves to bugs if the bookie crashed before we wrote to the journal. The
entry may exist in index, but not in the entrylog, a situation which cannot
be distinguished from an I/O error. The comments on BOOKKEEPER-447 goes into
more details.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira