From caf8c152121b14140f9e750f3d94c2e38e7e4c08 Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Tue, 23 May 2023 16:53:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=86=E6=89=B9=E6=A3=80?= =?UTF-8?q?=E6=9F=A5Object=E7=8A=B6=E6=80=81=E7=9A=84=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/event/check_object.go | 4 +-- internal/tickevent/batch_check_all_object.go | 32 ++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 internal/tickevent/batch_check_all_object.go diff --git a/internal/event/check_object.go b/internal/event/check_object.go index bb986c9..1d72c29 100644 --- a/internal/event/check_object.go +++ b/internal/event/check_object.go @@ -10,8 +10,8 @@ type CheckObject struct { ObjectIDs []int } -func NewCheckObject(objIDs []int) CheckObject { - return CheckObject{ +func NewCheckObject(objIDs []int) *CheckObject { + return &CheckObject{ ObjectIDs: objIDs, } } diff --git a/internal/tickevent/batch_check_all_object.go b/internal/tickevent/batch_check_all_object.go new file mode 100644 index 0000000..9578196 --- /dev/null +++ b/internal/tickevent/batch_check_all_object.go @@ -0,0 +1,32 @@ +package tickevent + +import ( + "gitlink.org.cn/cloudream/common/utils/logger" + mysql "gitlink.org.cn/cloudream/db/sql" + "gitlink.org.cn/cloudream/scanner/internal/event" +) + +const CHECK_OBJECT_BATCH_SIZE = 100 + +type BatchCheckObject struct { + lastCheckStart int +} + +func (e *BatchCheckObject) Execute(ctx ExecuteContext) { + objectIDs, err := mysql.Object.BatchGetAllObjectIDs(ctx.Args.DB.SQLCtx(), e.lastCheckStart, CHECK_OBJECT_BATCH_SIZE) + if err != nil { + logger.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 + logger.Debugf("all object checked, next time will start check at 0") + + } else { + e.lastCheckStart += CHECK_OBJECT_BATCH_SIZE + } +}