|
- package tickevent
-
- import (
- "gitlink.org.cn/cloudream/common/pkgs/logger"
- "gitlink.org.cn/cloudream/storage-scanner/internal/event"
- )
-
- const CHECK_OBJECT_BATCH_SIZE = 100
-
- type BatchCheckAllObject struct {
- lastCheckStart int
- }
-
- func NewBatchCheckAllObject() *BatchCheckAllObject {
- return &BatchCheckAllObject{}
- }
-
- func (e *BatchCheckAllObject) Execute(ctx ExecuteContext) {
- log := logger.WithType[BatchCheckAllObject]("TickEvent")
- log.Debugf("begin")
- defer log.Debugf("end")
-
- objectIDs, err := ctx.Args.DB.Object().BatchGetAllObjectIDs(ctx.Args.DB.SQLCtx(), e.lastCheckStart, CHECK_OBJECT_BATCH_SIZE)
- if err != nil {
- log.Warnf("batch get object ids failed, err: %s", err.Error())
- return
- }
-
- ctx.Args.EventExecutor.Post(event.NewCheckObject(objectIDs))
-
- // 如果结果的长度小于预期的长度,则认为已经查询了所有,下次从头再来
- if len(objectIDs) < CHECK_OBJECT_BATCH_SIZE {
- e.lastCheckStart = 0
- log.Debugf("all object checked, next time will start check at 0")
-
- } else {
- e.lastCheckStart += CHECK_OBJECT_BATCH_SIZE
- }
- }
|