You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

storage_gc.go 978 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package tickevent
  2. import (
  3. "time"
  4. "gitlink.org.cn/cloudream/common/pkgs/logger"
  5. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  6. scevt "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/mq/scanner/event"
  7. "gitlink.org.cn/cloudream/jcs-pub/scanner/internal/event"
  8. )
  9. type StorageGC struct {
  10. storageIDs []cdssdk.StorageID
  11. }
  12. func NewStorageGC() *StorageGC {
  13. return &StorageGC{}
  14. }
  15. func (e *StorageGC) Execute(ctx ExecuteContext) {
  16. log := logger.WithType[StorageGC]("TickEvent")
  17. log.Debugf("begin")
  18. defer log.Debugf("end")
  19. if len(e.storageIDs) == 0 {
  20. // 0点开始检查
  21. if time.Now().Hour() > 0 {
  22. return
  23. }
  24. stgIDs, err := ctx.Args.DB.Storage().GetAllIDs(ctx.Args.DB.DefCtx())
  25. if err != nil {
  26. log.Warnf("get all storage ids: %v", err)
  27. return
  28. }
  29. e.storageIDs = stgIDs
  30. }
  31. if len(e.storageIDs) == 0 {
  32. return
  33. }
  34. ctx.Args.EventExecutor.Post(event.NewHubShardStoreGC(scevt.NewHubShardStoreGC(e.storageIDs[0])))
  35. e.storageIDs = e.storageIDs[1:]
  36. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。