avoid close 'nil' panics if any (#18890)

brings a generic implementation that
prints a stack trace for 'nil' channel
closes(), if not safely closes it.
This commit is contained in:
Harshavardhana
2024-01-28 10:04:17 -08:00
committed by GitHub
parent 38de8e6936
commit 1d3bd02089
47 changed files with 150 additions and 104 deletions

View File

@@ -23,6 +23,8 @@ import (
"os/exec"
"runtime"
"syscall"
xioutil "github.com/minio/minio/internal/ioutil"
)
// Type of service signals currently supported.
@@ -109,7 +111,7 @@ func unfreezeServices() {
if val := globalServiceFreeze.Swap(_ch); val != nil {
if ch, ok := val.(chan struct{}); ok && ch != nil {
// Close previous non-nil channel.
close(ch)
xioutil.SafeClose(ch)
}
}
globalServiceFreezeCnt = 0 // Don't risk going negative.