You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Locking in ringpop-go is too granular, and is giving us headaches:
There are many module-level and datastructure-level locks which are difficult to reason about. That makes it difficult to refactor anything that changes way the critical sections are locked, and is hard to do right without adding new race conditions or deadlocks (ask @motiejus).
Make locking much more coarse: ideally, only one lock in Ringpop. The lock would be acquired when ringpop code is entered via API or network call (and released when a network call is made). That way we would know that whenever ringpop is mutating or reading its state, the lock is locked.
Remove all the other locks.
Win!
The text was updated successfully, but these errors were encountered:
Locking in ringpop-go is too granular, and is giving us headaches:
To fix this, we agreed to do the following:
The text was updated successfully, but these errors were encountered: