[ https://issues.apache.org/jira/browse/BOOKKEEPER-685?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sijie Guo updated BOOKKEEPER-685: --------------------------------- Attachment: BOOKKEEPER-685.patch [~rakeshr] in general, this comment is good since this callback is only called when a new entry log is rotated. but as your suggestion, changed the comment, so we could move on 4.2.2 release. > 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 > Assignee: Ivan Kelly > Priority: Blocker > Fix For: 4.2.2 > > Attachments: > 0001-BOOKKEEPER-685-Race-in-compaction-algorithm-from-BOO.patch, > BOOKKEEPER-685.patch > > > 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 was sent by Atlassian JIRA (v6.1#6144)