diff --git a/go.mod b/go.mod index 64190b53..732db715 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Azure/go-autorest/autorest v0.11.30 github.com/Azure/go-autorest/autorest/adal v0.9.24 github.com/Azure/go-autorest/tracing v0.6.1 - github.com/alitto/pond/v2 v2.6.0 + github.com/alitto/pond/v2 v2.6.1 github.com/dlclark/regexp2 v1.11.5 github.com/docker/cli v29.2.1+incompatible github.com/golang-jwt/jwt/v4 v4.5.2 diff --git a/go.sum b/go.sum index fd1b9b58..d96688f0 100644 --- a/go.sum +++ b/go.sum @@ -17,8 +17,8 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/Azure/go-autorest/tracing v0.6.1 h1:YUMSrC/CeD1ZnnXcNYU4a/fzsO35u2Fsful9L/2nyR0= github.com/Azure/go-autorest/tracing v0.6.1/go.mod h1:/3EgjbsjraOqiicERAeu3m7/z0x1TzjQGAwDrJrXGkc= -github.com/alitto/pond/v2 v2.6.0 h1:R4haldpYpIVnU7ZgHu4VexC8I/yDE2G4KF9GzRV+aIQ= -github.com/alitto/pond/v2 v2.6.0/go.mod h1:xkjYEgQ05RSpWdfSd1nM3OVv7TBhLdy7rMp3+2Nq+yE= +github.com/alitto/pond/v2 v2.6.1 h1:Q+BulqVYais/0K7Kb56HVmEGCufX2PsgXTm0Csnd4jw= +github.com/alitto/pond/v2 v2.6.1/go.mod h1:xkjYEgQ05RSpWdfSd1nM3OVv7TBhLdy7rMp3+2Nq+yE= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= diff --git a/vendor/github.com/alitto/pond/v2/pool.go b/vendor/github.com/alitto/pond/v2/pool.go index 2962b01d..643519d5 100644 --- a/vendor/github.com/alitto/pond/v2/pool.go +++ b/vendor/github.com/alitto/pond/v2/pool.go @@ -232,6 +232,16 @@ func (p *pool) DroppedTasks() uint64 { func (p *pool) worker(task any) { var readTaskErr, err error + exitedNormally := false + defer func() { + if !exitedNormally { + // In case of abnormal exit (e.g. runtime.Goexit() in the task), + // invoke readTask() to make sure the worker wait group is decremented + // and a submit waiter is notified to prevent deadlock + // (issue #135). + p.readTask() + } + }() for { if task != nil { _, err = invokeTask[any](task, p.panicRecovery) @@ -242,6 +252,7 @@ func (p *pool) worker(task any) { task, readTaskErr = p.readTask() if readTaskErr != nil { + exitedNormally = true return } } diff --git a/vendor/modules.txt b/vendor/modules.txt index dac97ef2..003e8d38 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -21,7 +21,7 @@ github.com/Azure/go-autorest/logger # github.com/Azure/go-autorest/tracing v0.6.1 ## explicit; go 1.15 github.com/Azure/go-autorest/tracing -# github.com/alitto/pond/v2 v2.6.0 +# github.com/alitto/pond/v2 v2.6.1 ## explicit; go 1.20 github.com/alitto/pond/v2 github.com/alitto/pond/v2/internal/future