Skip to content

Commit

Permalink
test: fix potential goroutine leak in TestUpdateAddresses_RetryFromFi…
Browse files Browse the repository at this point in the history
…rstAddr (#5023)
  • Loading branch information
charlesxsh authored Jan 5, 2022
1 parent afded72 commit 2fb1ac8
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions clientconn_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()
Expand Down

0 comments on commit 2fb1ac8

Please sign in to comment.