diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-09-11 02:07:14 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-09-11 02:07:14 -0700 |
| commit | a243d7e047878bb85ea977ff20d7a494b86e88d6 (patch) | |
| tree | c62b13f7994d6167a5eae30296efb0a538721c4e | |
| parent | f7f01ac209de82fea18ec849ca14c4ea9fa7341d (diff) | |
| download | seaweedfs-a243d7e047878bb85ea977ff20d7a494b86e88d6.tar.xz seaweedfs-a243d7e047878bb85ea977ff20d7a494b86e88d6.zip | |
EC: clean up if failed in the middle
| -rw-r--r-- | weed/server/volume_grpc_erasure_coding.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/weed/server/volume_grpc_erasure_coding.go b/weed/server/volume_grpc_erasure_coding.go index 30ed5f15f..364045d9b 100644 --- a/weed/server/volume_grpc_erasure_coding.go +++ b/weed/server/volume_grpc_erasure_coding.go @@ -49,6 +49,17 @@ func (vs *VolumeServer) VolumeEcShardsGenerate(ctx context.Context, req *volume_ return nil, fmt.Errorf("existing collection:%v unexpected input: %v", v.Collection, req.Collection) } + shouldCleanup := true + defer func() { + if !shouldCleanup { + return + } + for i := 0; i < erasure_coding.TotalShardsCount; i++ { + os.Remove(fmt.Sprintf("%s.ec%2d", baseFileName, i)) + } + os.Remove(v.IndexFileName() + ".ecx") + }() + // write .ec00 ~ .ec13 files if err := erasure_coding.WriteEcFiles(baseFileName); err != nil { return nil, fmt.Errorf("WriteEcFiles %s: %v", baseFileName, err) @@ -64,6 +75,8 @@ func (vs *VolumeServer) VolumeEcShardsGenerate(ctx context.Context, req *volume_ return nil, fmt.Errorf("WriteEcFiles %s: %v", baseFileName, err) } + shouldCleanup = false + return &volume_server_pb.VolumeEcShardsGenerateResponse{}, nil } |
