From 1a250a89e6ebb886b1da8ded1fcf1f46e6bac5e0 Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Fri, 22 Nov 2024 11:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=9A=E6=97=B6=E6=B8=85?= =?UTF-8?q?=E7=90=86=E5=88=86=E7=89=87=E7=9A=84=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scanner/internal/tickevent/storage_gc.go | 46 ++++++++++++++++++++++++ scanner/main.go | 2 ++ 2 files changed, 48 insertions(+) create mode 100644 scanner/internal/tickevent/storage_gc.go diff --git a/scanner/internal/tickevent/storage_gc.go b/scanner/internal/tickevent/storage_gc.go new file mode 100644 index 0000000..4b4b9e7 --- /dev/null +++ b/scanner/internal/tickevent/storage_gc.go @@ -0,0 +1,46 @@ +package tickevent + +import ( + "time" + + "gitlink.org.cn/cloudream/common/pkgs/logger" + cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" + scevt "gitlink.org.cn/cloudream/storage/common/pkgs/mq/scanner/event" + "gitlink.org.cn/cloudream/storage/scanner/internal/event" +) + +type StorageGC struct { + storageIDs []cdssdk.StorageID +} + +func NewStorageGC() *StorageGC { + return &StorageGC{} +} + +func (e *StorageGC) Execute(ctx ExecuteContext) { + log := logger.WithType[StorageGC]("TickEvent") + log.Debugf("begin") + defer log.Debugf("end") + + if len(e.storageIDs) == 0 { + // 0点开始检查 + if time.Now().Hour() > 0 { + return + } + + stgIDs, err := ctx.Args.DB.Storage().GetAllIDs(ctx.Args.DB.DefCtx()) + if err != nil { + log.Warnf("get all storage ids: %v", err) + return + } + e.storageIDs = stgIDs + } + + if len(e.storageIDs) == 0 { + return + } + + ctx.Args.EventExecutor.Post(event.NewAgentShardStoreGC(scevt.NewAgentShardStoreGC(e.storageIDs[0]))) + ctx.Args.EventExecutor.Post(event.NewAgentStorageGC(scevt.NewAgentStorageGC(e.storageIDs[0]))) + e.storageIDs = e.storageIDs[1:] +} diff --git a/scanner/main.go b/scanner/main.go index c35b1be..6ab7730 100644 --- a/scanner/main.go +++ b/scanner/main.go @@ -143,6 +143,8 @@ func startTickEvent(tickExecutor *tickevent.Executor) { tickExecutor.Start(tickevent.NewBatchCheckAllPackage(), interval, tickevent.StartOption{RandomStartDelayMs: 60 * 1000}) + tickExecutor.Start(tickevent.NewStorageGC(), interval, tickevent.StartOption{RandomStartDelayMs: 60 * 1000}) + // tickExecutor.Start(tickevent.NewBatchCheckAllRepCount(), interval, tickevent.StartOption{RandomStartDelayMs: 60 * 1000}) tickExecutor.Start(tickevent.NewBatchCheckAllStorage(), interval, tickevent.StartOption{RandomStartDelayMs: 60 * 1000})