From 7a479e2ed4ea4f699133bf4adca86e09510ab41f Mon Sep 17 00:00:00 2001 From: cute-angelia Date: Sat, 26 Aug 2023 23:46:05 +0800 Subject: [PATCH 1/3] fix minio removeobjects --- internal/dao/storage/minio.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/dao/storage/minio.go b/internal/dao/storage/minio.go index 3859a5b7..cc2b71a2 100644 --- a/internal/dao/storage/minio.go +++ b/internal/dao/storage/minio.go @@ -134,13 +134,16 @@ func (s *minioServant) DeleteObject(objectKey string) error { func (s *minioServant) DeleteObjects(objectKeys []string) (err error) { objectsCh := make(chan minio.ObjectInfo, len(objectKeys)) - resCh := s.client.RemoveObjects(context.Background(), s.bucket, objectsCh, minio.RemoveObjectsOptions{}) - for _, objectKey := range objectKeys { - objectsCh <- minio.ObjectInfo{ - Key: objectKey, + go func() { + defer close(objectsCh) + for _, objectKey := range objectKeys { + objectsCh <- minio.ObjectInfo{ + Key: objectKey, + } } - } + }() + resCh := s.client.RemoveObjects(context.Background(), s.bucket, objectsCh, minio.RemoveObjectsOptions{}) // 宽松处理所有错误,只记录最后一次发生的错误 for result := range resCh { if result.Err != nil { From a02d4d24d805f0cdf5602ddafc481302daf636f4 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Sun, 27 Aug 2023 09:25:08 +0800 Subject: [PATCH 2/3] optimized minio removeobjects --- CHANGELOG.md | 4 ++++ internal/dao/storage/minio.go | 15 +++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eeb5499e..d3278947 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to paopao-ce are documented in this file. ## 0.5.0+dev ([`dev`](https://github.com/rocboss/paopao-ce/tree/dev)) +## 0.4.2 +### Fixed +- fixed remove multi-objects no effects and occurs resource leak error when use Minio as OSS(Object Storage System). + ## 0.4.1 ### Changed - infinite scrolling instead of pagination for Home/User/Profile page diff --git a/internal/dao/storage/minio.go b/internal/dao/storage/minio.go index cc2b71a2..028e331a 100644 --- a/internal/dao/storage/minio.go +++ b/internal/dao/storage/minio.go @@ -134,16 +134,15 @@ func (s *minioServant) DeleteObject(objectKey string) error { func (s *minioServant) DeleteObjects(objectKeys []string) (err error) { objectsCh := make(chan minio.ObjectInfo, len(objectKeys)) - go func() { - defer close(objectsCh) - for _, objectKey := range objectKeys { - objectsCh <- minio.ObjectInfo{ - Key: objectKey, - } + resCh := s.client.RemoveObjects(context.Background(), s.bucket, objectsCh, minio.RemoveObjectsOptions{}) + for _, objectKey := range objectKeys { + objectsCh <- minio.ObjectInfo{ + Key: objectKey, } - }() + } + // 记得一定要close,否则会被卡死,退出不了函数,造成资源泄露!!! + close(objectsCh) - resCh := s.client.RemoveObjects(context.Background(), s.bucket, objectsCh, minio.RemoveObjectsOptions{}) // 宽松处理所有错误,只记录最后一次发生的错误 for result := range resCh { if result.Err != nil { From 52ccf537fa2cad91510c1cd4c4788acc4211fe72 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Sun, 27 Aug 2023 10:09:47 +0800 Subject: [PATCH 3/3] update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3278947..7a1cf63c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to paopao-ce are documented in this file. ## 0.5.0+dev ([`dev`](https://github.com/rocboss/paopao-ce/tree/dev)) ## 0.4.2 ### Fixed -- fixed remove multi-objects no effects and occurs resource leak error when use Minio as OSS(Object Storage System). +- fixed remove multi-objects no effects and occurs resource leak error when use Minio as OSS(Object Storage System).[#371](https://github.com/rocboss/paopao-ce/pull/371) [#372](https://github.com/rocboss/paopao-ce/pull/372) ## 0.4.1 ### Changed