Skip to content

Commit 63ecc0e

Browse files
committed
fix: goroutine leak when timeout
1 parent 00651f7 commit 63ecc0e

File tree

18 files changed

+1060
-1
lines changed

18 files changed

+1060
-1
lines changed

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ require (
155155
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
156156
)
157157

158+
require go.uber.org/goleak v1.3.0
159+
158160
require (
159161
github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.12.0 // indirect
160162
github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect

pkg/util/util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ type TimeoutFunc func() (err error)
405405
// WaitUntilTimeout waits for the exec function to complete or return timeout error
406406
func WaitUntilTimeout(timeout time.Duration, execFunc ExecFunc, timeoutFunc TimeoutFunc) error {
407407
// Create a channel to receive the result of the azcopy exec function
408-
done := make(chan bool)
408+
done := make(chan bool, 1)
409409
var err error
410410

411411
// Start the azcopy exec function in a goroutine

pkg/util/util_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"time"
2525

2626
"github.com/stretchr/testify/assert"
27+
"go.uber.org/goleak"
2728
"go.uber.org/mock/gomock"
2829
)
2930

@@ -771,6 +772,7 @@ func TestSetVolumeOwnership(t *testing.T) {
771772
}
772773

773774
func TestWaitUntilTimeout(t *testing.T) {
775+
defer goleak.VerifyNone(t)
774776
tests := []struct {
775777
desc string
776778
timeout time.Duration
@@ -797,6 +799,7 @@ func TestWaitUntilTimeout(t *testing.T) {
797799
return nil
798800
},
799801
timeoutFunc: func() error {
802+
time.Sleep(2 * time.Second)
800803
return fmt.Errorf("timeout error")
801804
},
802805
expectedErr: fmt.Errorf("timeout error"),

vendor/go.uber.org/goleak/.gitignore

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/go.uber.org/goleak/.golangci.yml

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/go.uber.org/goleak/CHANGELOG.md

Lines changed: 74 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/go.uber.org/goleak/LICENSE

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/go.uber.org/goleak/Makefile

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/go.uber.org/goleak/README.md

Lines changed: 74 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/go.uber.org/goleak/doc.go

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)