fix(knowledge): Optimize the knowledge domain idgen code (#574)
This commit is contained in:
parent
ab0ce50df5
commit
c11780b28d
|
|
@ -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) {
|
func (k *knowledgeSVC) genMultiIDs(ctx context.Context, counts int) ([]int64, error) {
|
||||||
allIDs := make([]int64, 0)
|
allIDs := make([]int64, 0)
|
||||||
|
retryInterval := 5 * time.Millisecond
|
||||||
for l := 0; l < counts; l += 100 {
|
for l := 0; l < counts; l += 100 {
|
||||||
r := min(l+100, counts)
|
r := min(l+100, counts)
|
||||||
batchSize := r - l
|
batchSize := r - l
|
||||||
ids, err := k.idgen.GenMultiIDs(ctx, batchSize)
|
var ids []int64
|
||||||
if err != nil {
|
var err error
|
||||||
return nil, errorx.New(errno.ErrKnowledgeIDGenCode, errorx.KV("msg", fmt.Sprintf("GenMultiIDs failed, err: %v", err)))
|
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...)
|
allIDs = append(allIDs, ids...)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue