Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
peer: eliminate circular waiting by calling maybeSendNodeAnn async
In this commit, we attempt to fix circular waiting scenario introduced inadvertently when [fixing a race condition scenario](#7856). With that PR, we added a new channel that would block `Disconnect`, and `WaitForDisconnect` to ensure that only until the `Start` method has finished would those calls be allowed to succeed. The issue is that if the server is trying to disconnect a peer due to a concurrent connection, but `Start` is blocked on `maybeSendNodeAnn`, which then wants to grab the main server mutex, then `Start` can never exit, which causes `startReady` to never be closed, which then causes the server to be blocked. This PR attempts to fix the issue by calling `maybeSendNodeAnn` in a goroutine, so it can grab the server mutex and not block the `Start` method. Fixes #7924 Fixes #7928 Fixes #7866
- Loading branch information