mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
fix ec.rebuild bugs
This commit is contained in:
parent
d85b41b904
commit
11cffb3168
|
@ -68,6 +68,7 @@ func (vs *VolumeServer) VolumeEcShardsRebuild(ctx context.Context, req *volume_s
|
||||||
for _, location := range vs.store.Locations {
|
for _, location := range vs.store.Locations {
|
||||||
if util.FileExists(path.Join(location.Directory, baseFileName+".ecx")) {
|
if util.FileExists(path.Join(location.Directory, baseFileName+".ecx")) {
|
||||||
// write .ec01 ~ .ec14 files
|
// write .ec01 ~ .ec14 files
|
||||||
|
baseFileName = path.Join(location.Directory, baseFileName)
|
||||||
if generatedShardIds, err := erasure_coding.RebuildEcFiles(baseFileName); err != nil {
|
if generatedShardIds, err := erasure_coding.RebuildEcFiles(baseFileName); err != nil {
|
||||||
return nil, fmt.Errorf("RebuildEcFiles %s: %v", baseFileName, err)
|
return nil, fmt.Errorf("RebuildEcFiles %s: %v", baseFileName, err)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -249,19 +249,17 @@ func rebuildEcFiles(shardHasData []bool, inputFiles []*os.File, outputFiles []*o
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if inputBufferDataSize != 0 {
|
if inputBufferDataSize == 0 {
|
||||||
inputBufferDataSize = n
|
inputBufferDataSize = n
|
||||||
}
|
}
|
||||||
if inputBufferDataSize != n {
|
if inputBufferDataSize != n {
|
||||||
return fmt.Errorf("ec shard size need to be the same")
|
return fmt.Errorf("ec shard size expected %d actual %d", inputBufferDataSize, n)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
buffers[i] = nil
|
buffers[i] = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("reconstructing [%d,%d)\n", startOffset, startOffset+int64(inputBufferDataSize))
|
|
||||||
|
|
||||||
// encode the data
|
// encode the data
|
||||||
err = enc.Reconstruct(buffers)
|
err = enc.Reconstruct(buffers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue