1
0
mirror of https://github.com/minio/minio.git synced 2025-04-09 06:00:12 -04:00

fix: health client leak when calling UpdateAllTargets ()

When `LoadBucketMetadataHandler` is called and `UpdateAllTargets` gets called.

Since targets are rebuilt we cancel all.
This commit is contained in:
Klaus Post 2022-06-24 11:12:52 -07:00 committed by GitHub
parent 4fd1986885
commit baf257adcb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -24,7 +24,7 @@ import (
jsoniter "github.com/json-iterator/go" jsoniter "github.com/json-iterator/go"
"github.com/minio/madmin-go" "github.com/minio/madmin-go"
minio "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7"
miniogo "github.com/minio/minio-go/v7" miniogo "github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials" "github.com/minio/minio-go/v7/pkg/credentials"
"github.com/minio/minio/internal/bucket/replication" "github.com/minio/minio/internal/bucket/replication"
@ -272,8 +272,8 @@ func (sys *BucketTargetSys) UpdateAllTargets(bucket string, tgts *madmin.BucketT
} }
sys.Lock() sys.Lock()
defer sys.Unlock() defer sys.Unlock()
if tgts == nil || tgts.Empty() {
// remove target and arn association // Remove existingtarget and arn association
if tgts, ok := sys.targetsMap[bucket]; ok { if tgts, ok := sys.targetsMap[bucket]; ok {
for _, t := range tgts { for _, t := range tgts {
if tgt, ok := sys.arnRemotesMap[t.Arn]; ok && tgt.healthCancelFn != nil { if tgt, ok := sys.arnRemotesMap[t.Arn]; ok && tgt.healthCancelFn != nil {
@ -281,8 +281,11 @@ func (sys *BucketTargetSys) UpdateAllTargets(bucket string, tgts *madmin.BucketT
} }
delete(sys.arnRemotesMap, t.Arn) delete(sys.arnRemotesMap, t.Arn)
} }
}
delete(sys.targetsMap, bucket) delete(sys.targetsMap, bucket)
}
// No need for more if not adding anything
if tgts == nil || tgts.Empty() {
sys.updateBandwidthLimit(bucket, 0) sys.updateBandwidthLimit(bucket, 0)
return return
} }