|
- package tickevent
-
- import (
- "gitlink.org.cn/cloudream/common/pkgs/logger"
- cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
- scevt "gitlink.org.cn/cloudream/storage2/common/pkgs/mq/scanner/event"
- "gitlink.org.cn/cloudream/storage2/scanner/internal/event"
- )
-
- const HUB_CHECK_CACHE_BATCH_SIZE = 2
-
- type BatchAllHubCheckShardStore struct {
- stgIDs []cdssdk.StorageID
- }
-
- func NewBatchAllHubCheckShardStore() *BatchAllHubCheckShardStore {
- return &BatchAllHubCheckShardStore{}
- }
-
- func (e *BatchAllHubCheckShardStore) Execute(ctx ExecuteContext) {
- log := logger.WithType[BatchAllHubCheckShardStore]("TickEvent")
- log.Debugf("begin")
- defer log.Debugf("end")
-
- if len(e.stgIDs) == 0 {
- ids, err := ctx.Args.DB.Storage().GetAllIDs(ctx.Args.DB.DefCtx())
- if err != nil {
- log.Warnf("get all storages failed, err: %s", err.Error())
- return
- }
-
- log.Debugf("new check start, get all storages")
- e.stgIDs = ids
- }
-
- checkedCnt := 0
- for ; checkedCnt < len(e.stgIDs) && checkedCnt < HUB_CHECK_CACHE_BATCH_SIZE; checkedCnt++ {
- // nil代表进行全量检查
- ctx.Args.EventExecutor.Post(event.NewHubCheckShardStore(scevt.NewHubCheckShardStore(e.stgIDs[checkedCnt])))
- }
- e.stgIDs = e.stgIDs[checkedCnt:]
- }
|