require the storage lock in lastTransaction.
This is required (or maybe strongly implied) by the IStorage interface. Also, rearrange the order of operations in _process_invalidations. Each of these changes avoid a potential race when a connection starts a transaction while invalidateTransaction is being called. Basically, we don't want a connection to get a lastTransaction corresponding to invalidations it hasn't processed. This neither fixes nor provokes any test failures. :) The need for this change was discovered via code inspection. It's hard to see how to test the race without getting being insanely whitebox.
Showing
Please register or sign in to comment