mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
erasure coding: add cleanup step if anything goes wrong
This commit is contained in:
parent
f74b29416a
commit
6cd1ce8b74
|
@ -203,6 +203,14 @@ func parallelCopyEcShardsFromSource(grpcDialOption grpc.DialOption, targetServer
|
|||
server.addEcVolumeShards(volumeId, collection, copiedShardIds)
|
||||
}
|
||||
}
|
||||
cleanupFunc := func(server *EcNode, allocatedEcShardIds []uint32) {
|
||||
if err := unmountEcShards(grpcDialOption, volumeId, pb.NewServerAddressFromDataNode(server.info), allocatedEcShardIds); err != nil {
|
||||
fmt.Printf("unmount aborted shards %d.%v on %s: %v\n", volumeId, allocatedEcShardIds, server.info.Id, err)
|
||||
}
|
||||
if err := sourceServerDeleteEcShards(grpcDialOption, collection, volumeId, pb.NewServerAddressFromDataNode(server.info), allocatedEcShardIds); err != nil {
|
||||
fmt.Printf("remove aborted shards %d.%v on %s: %v\n", volumeId, allocatedEcShardIds, server.info.Id, err)
|
||||
}
|
||||
}
|
||||
|
||||
// maybe parallelize
|
||||
for i, server := range targetServers {
|
||||
|
@ -221,6 +229,12 @@ func parallelCopyEcShardsFromSource(grpcDialOption grpc.DialOption, targetServer
|
|||
close(shardIdChan)
|
||||
|
||||
if err != nil {
|
||||
for i, server := range targetServers {
|
||||
if len(allocatedEcIds[i]) <= 0 {
|
||||
continue
|
||||
}
|
||||
cleanupFunc(server, allocatedEcIds[i])
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue