[ https://issues.apache.org/jira/browse/BOOKKEEPER-685?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13778515#comment-13778515 ]
Rakesh R commented on BOOKKEEPER-685: ------------------------------------- [~hustlmsp] thats great!. I think, I got the concept of 'onRotateEntryLog' in 4.2.2 branch. Thanks again for helping out and knowledge sharing. +1 for your idea of 'set flushed to false after add something to entry logger'. Now I also feel its simple approach and would work in 4.2.2 branch. > 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