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 产生系统事件