From c11780b28d0ce7e8c45305ac1cf4205f1cefaf00 Mon Sep 17 00:00:00 2001 From: liuyunchao-1998 Date: Tue, 5 Aug 2025 17:34:43 +0800 Subject: [PATCH] fix(knowledge): Optimize the knowledge domain idgen code (#574) --- backend/domain/knowledge/service/knowledge.go | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/backend/domain/knowledge/service/knowledge.go b/backend/domain/knowledge/service/knowledge.go index 98019945..f1c5353a 100644 --- a/backend/domain/knowledge/service/knowledge.go +++ b/backend/domain/knowledge/service/knowledge.go @@ -1497,12 +1497,26 @@ func (k *knowledgeSVC) getObjectURL(ctx context.Context, uri string) (string, er func (k *knowledgeSVC) genMultiIDs(ctx context.Context, counts int) ([]int64, error) { allIDs := make([]int64, 0) + retryInterval := 5 * time.Millisecond for l := 0; l < counts; l += 100 { r := min(l+100, counts) batchSize := r - l - ids, err := k.idgen.GenMultiIDs(ctx, batchSize) - if err != nil { - return nil, errorx.New(errno.ErrKnowledgeIDGenCode, errorx.KV("msg", fmt.Sprintf("GenMultiIDs failed, err: %v", err))) + var ids []int64 + var err error + maxRetries := 5 + retryCount := 0 + for { + ids, err = k.idgen.GenMultiIDs(ctx, batchSize) + if err != nil { + if retryCount >= maxRetries { + return nil, errorx.New(errno.ErrKnowledgeIDGenCode, errorx.KV("msg", fmt.Sprintf("GenMultiIDs failed, err: %v", err))) + } + logs.CtxErrorf(ctx, "[genMultiIDs] GenMultiIDs failed, retry %d/%d: %v", retryCount+1, maxRetries, err) + time.Sleep(retryInterval) + retryCount++ + continue + } + break } allIDs = append(allIDs, ids...) }