Details
-
Bug
-
Status: Resolved
-
Trivial
-
Resolution: Fixed
-
None
-
None
Description
checkoutAndBlock is not synchronized, but has a non-atomic write to numPending. Meanwhile, all of the other writes to numPending are in sync methods.
In this case it turns out to be ok because all of the code paths calling this method are already sync:
synchronized doAfterDocument -> checkout -> checkoutAndBlock
checkoutLargestNonPendingWriter -> synchronized(this) -> checkout -> checkoutAndBlock
If we make synchronized checkoutAndBlock that protects us against future changes, shouldn't cause any performance impact since the code paths will already be going through a sync block, and will make an IntelliJ warning go away.
Attachments
Issue Links
- links to