From e2ab6eaf335d5fb023e87e80916a0d827cf47779 Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Thu, 14 Aug 2025 17:11:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3EC=E5=AF=B9=E8=B1=A1=E9=87=8D?= =?UTF-8?q?=E5=BB=BA=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/ticktock/redundancy_recover.go | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/client/internal/ticktock/redundancy_recover.go b/client/internal/ticktock/redundancy_recover.go index cf1bd30..9873466 100644 --- a/client/internal/ticktock/redundancy_recover.go +++ b/client/internal/ticktock/redundancy_recover.go @@ -3,7 +3,6 @@ package ticktock import ( "context" "fmt" - "strconv" "github.com/samber/lo" "gitlink.org.cn/cloudream/common/pkgs/logger" @@ -959,19 +958,15 @@ func (t *ChangeRedundancy) ecToEC(ctx *changeRedundancyContext, obj jcstypes.Obj return nil, nil, nil } - for k, vs := range ret.Stored { - idx, err := strconv.ParseInt(k, 10, 64) - if err != nil { - return nil, nil, fmt.Errorf("parsing result key %s as index: %w", k, err) - } - if len(vs) == 0 { + for i := range newBlocks { + v := ret.Get(fmt.Sprintf("%v", i)) + if v == nil { + // 有一些块已经存在,所以不会在计划执行结果中 continue } - v := vs[0] - r := v.(*ops2.FileInfoValue) - newBlocks[idx].FileHash = r.Hash - newBlocks[idx].Size = r.Size + newBlocks[i].FileHash = r.Hash + newBlocks[i].Size = r.Size } var evtBlockTrans []datamap.DataTransfer @@ -1205,19 +1200,16 @@ func (t *ChangeRedundancy) reconstructLRC(ctx *changeRedundancyContext, obj jcst return nil, nil, nil } - for k, vs := range ret.Stored { - idx, err := strconv.ParseInt(k, 10, 64) - if err != nil { - return nil, nil, fmt.Errorf("parsing result key %s as index: %w", k, err) - } - if len(vs) == 0 { + for i := range newBlocks { + v := ret.Get(fmt.Sprintf("%v", i)) + if v == nil { + // 有一些块已经存在,所以不会在计划执行结果中 continue } - v := vs[0] r := v.(*ops2.FileInfoValue) - newBlocks[idx].FileHash = r.Hash - newBlocks[idx].Size = r.Size + newBlocks[i].FileHash = r.Hash + newBlocks[i].Size = r.Size } // TODO 产生系统事件