[
https://issues.apache.org/jira/browse/BOOKKEEPER-685?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13768983#comment-13768983
]
Sijie Guo commented on BOOKKEEPER-685:
--------------------------------------
{quote}
Out of interest, why don't you want to notify the offset?
{quote}
notifying offset doesn't help. the core part of
EntryLogListener#onRotateEntryLog is that bookie should not checkpoint/flush
current entry log. notifying offset doesn't (and should not) change this
behavior, so GC thread still needs to wait until entry logger rotated to next
file then do flushing.
#onRotateEntryLog is not a good name for 4.2 branch. since in the 4.2 patch for
BOOKKEEPER-664, onRotateEntryLog actually means entry logger file is flushed,
so you don't need to call EntryLogger#flush in GCThread.
But in trunk, onRotateEntryLog just means that entry logger file is rotated,
which doesn't mean that entry logger is flushed. so GCThread needs to call
EntryLogger#checkpoint to flush the previous entry log files before flushing
ledger cache.
> Race in compaction algorithm from BOOKKEEPER-664
> ------------------------------------------------
>
> Key: BOOKKEEPER-685
> URL: https://issues.apache.org/jira/browse/BOOKKEEPER-685
> Project: Bookkeeper
> Issue Type: Bug
> Reporter: Ivan Kelly
> Priority: Blocker
> Fix For: 4.2.2
>
>
> I discovered a race in the algorithm when I was forward porting to trunk.
> 1) Thread1: flushed.set(false)
> 2) Thread2: onRotateEntryLog() // flushed.set(true)
> 3) Thread1: entryLogger addEntry L123-E456
> 4) Thread1: offsets > max, waits for flushed, flushed is true(as set in 2),
> L123-E456 updated in ledger cache
> 5) T2: L123 flushed out of ledger cache
> 6) Crash
> This will possible lose 1 entry. I've only reasoned this, not observed it,
> but it can happen.
> The fix is pretty easy. EntryLoggerListener should notify with the point
> offset in the entry log it has synced as far as.
>
--
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