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()
|
defer lis3.Close()
|
||||||
|
|
||||||
closeServer2 := make(chan struct{})
|
closeServer2 := make(chan struct{})
|
||||||
|
exitCh := make(chan struct{})
|
||||||
server1ContactedFirstTime := make(chan struct{})
|
server1ContactedFirstTime := make(chan struct{})
|
||||||
server1ContactedSecondTime := make(chan struct{})
|
server1ContactedSecondTime := make(chan struct{})
|
||||||
server2ContactedFirstTime := make(chan struct{})
|
server2ContactedFirstTime := make(chan struct{})
|
||||||
server2ContactedSecondTime := make(chan struct{})
|
server2ContactedSecondTime := make(chan struct{})
|
||||||
server3Contacted := make(chan struct{})
|
server3Contacted := make(chan struct{})
|
||||||
|
|
||||||
|
defer close(exitCh)
|
||||||
|
|
||||||
// Launch server 1.
|
// Launch server 1.
|
||||||
go func() {
|
go func() {
|
||||||
// First, let's allow the initial connection to go READY. We need to do
|
// 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.
|
// until balancer is built to process the addresses.
|
||||||
stateNotifications := testBalancerBuilder.nextStateNotifier()
|
stateNotifications := testBalancerBuilder.nextStateNotifier()
|
||||||
// Wait for the transport to become ready.
|
// Wait for the transport to become ready.
|
||||||
for s := range stateNotifications {
|
for {
|
||||||
if s == connectivity.Ready {
|
select {
|
||||||
break
|
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
|
// Once it's ready, curAddress has been set. So let's close this
|
||||||
// connection prompting the first reconnect cycle.
|
// connection prompting the first reconnect cycle.
|
||||||
conn1.Close()
|
conn1.Close()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue