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:] }