Created attachment 23455 [details] Fix broken synchronization Various classes synchronize on a variable which is then changed. This will not have the desired effect, as all accesses must use the same lock in order for the synchronisation to work correctly. The patch adds new final lock objects (which cannot be changed midway). It also adds some additional synchronization to various get() methods to ensure that reader threads get the correct updates.
Thanks for the patch. I have applied to trunk and proposed it for 6.0.x. Whilst there aren't any explicit bugs caused by this it may be behind some of the harder to reproduce bugs.
NP. That's the problem with incomplete or incorrect synchronization - most of the time, things work as expected. It's also really difficult to force the errors to occur...
This has been applied to 6.0.x and will be included in 6.0.20 onwards.
Cluster membership sync improvement applied to TC 5.5 as r790321. Will be part of 5.5.28.
Removed spam.