Ivan Kelly created BOOKKEEPER-685:
-------------------------------------

             Summary: 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

Reply via email to