1. Why is addEntry synchronized? Other than flush, it seems to be the only other synchronized method.
It doesn't necessarily have to be, as EntryLogger#addEntry is synchronized and LedgerCacheImpl seems quite threadsafe. It has always been synchronized though, so I don't want to change it without good reason.
2. Both addEntry and flush access ledgerCache. Are you sure that making flush unsynchronized will not cause any race?
ledgerCache is threadsafe as far as I can see. Also, up until Jan 4, flush was no unsynchronized, as it didn't present a problem.
3. What exactly makes you think it is an obvious mistake, other than you being the author of the 293 patch?
Its completely unrelated to the patch. Usually, for a change like that, unrelated to the issue, I'd have noted why I did it in the jira or added a comment. I think I had been touching that code to make it accessible for the tests, and changed it back wrong. I need to check at home, as thats the repo the original changes were in.