mirror of https://github.com/grpc/grpc-go.git
test: fix potential goroutine leak in TestUpdateAddresses_RetryFromFirstAddr (#5023)
This commit is contained in:
parent
afded7231d
commit
2fb1ac854b
|
@ -859,12 +859,15 @@ func (s) TestUpdateAddresses_RetryFromFirstAddr(t *testing.T) {
|
|||
defer lis3.Close()
|
||||
|
||||
closeServer2 := make(chan struct{})
|
||||
exitCh := make(chan struct{})
|
||||
server1ContactedFirstTime := make(chan struct{})
|
||||
server1ContactedSecondTime := make(chan struct{})
|
||||
server2ContactedFirstTime := make(chan struct{})
|
||||
server2ContactedSecondTime := make(chan struct{})
|
||||
server3Contacted := make(chan struct{})
|
||||
|
||||
defer close(exitCh)
|
||||
|
||||
// Launch server 1.
|
||||
go func() {
|
||||
// First, let's allow the initial connection to go READY. We need to do
|
||||
|
@ -888,12 +891,18 @@ func (s) TestUpdateAddresses_RetryFromFirstAddr(t *testing.T) {
|
|||
// until balancer is built to process the addresses.
|
||||
stateNotifications := testBalancerBuilder.nextStateNotifier()
|
||||
// Wait for the transport to become ready.
|
||||
for s := range stateNotifications {
|
||||
if s == connectivity.Ready {
|
||||
break
|
||||
for {
|
||||
select {
|
||||
case st := <-stateNotifications:
|
||||
if st == connectivity.Ready {
|
||||
goto ready
|
||||
}
|
||||
case <-exitCh:
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
ready:
|
||||
// Once it's ready, curAddress has been set. So let's close this
|
||||
// connection prompting the first reconnect cycle.
|
||||
conn1.Close()
|
||||
|
|
Loading…
Reference in New Issue