Browse Source

解决EC对象重建失败的问题

master
Sydonian 3 months ago
parent
commit
e2ab6eaf33
1 changed files with 12 additions and 20 deletions
  1. +12
    -20
      client/internal/ticktock/redundancy_recover.go

+ 12
- 20
client/internal/ticktock/redundancy_recover.go View File

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


Loading…
Cancel
Save