Browse Source

correct count for free ec slots, avoid removing generated shards

pull/991/head
Chris Lu 6 years ago
parent
commit
06133ae98f
  1. 1
      weed/shell/command_ec_balance.go
  2. 9
      weed/shell/command_ec_rebuild.go

1
weed/shell/command_ec_balance.go

@ -256,6 +256,7 @@ func pickOneEcNodeAndMoveOneShard(ctx context.Context, commandEnv *commandEnv, a
} }
destEcNode.freeEcSlot-- destEcNode.freeEcSlot--
existingLocation.freeEcSlot++
return nil return nil
} }

9
weed/shell/command_ec_rebuild.go

@ -144,23 +144,18 @@ func rebuildOneEcVolume(ctx context.Context, commandEnv *commandEnv, rebuilder *
fmt.Fprintf(writer, "%s delete copied ec shards %s %d.%v\n", rebuilder.info.Id, collection, volumeId, copiedShardIds) fmt.Fprintf(writer, "%s delete copied ec shards %s %d.%v\n", rebuilder.info.Id, collection, volumeId, copiedShardIds)
} }
// ask the rebuilder to delete the copied shards
err = sourceServerDeleteEcShards(ctx, commandEnv.option.GrpcDialOption, collection, volumeId, rebuilder.info.Id, generatedShardIds)
if err != nil {
fmt.Fprintf(writer, "%s delete generated ec shards %s %d.%v\n", rebuilder.info.Id, collection, volumeId, generatedShardIds)
}
}() }()
if !applyChanges { if !applyChanges {
return nil return nil
} }
// generate ec shards, and maybe ecx file, and mount them
// generate ec shards, and maybe ecx file
generatedShardIds, err = generateMissingShards(ctx, commandEnv.option.GrpcDialOption, collection, volumeId, rebuilder.info.Id) generatedShardIds, err = generateMissingShards(ctx, commandEnv.option.GrpcDialOption, collection, volumeId, rebuilder.info.Id)
if err != nil { if err != nil {
return err return err
} }
rebuilder.freeEcSlot -= len(generatedShardIds)
// mount the generated shards // mount the generated shards
err = mountEcShards(ctx, commandEnv.option.GrpcDialOption, collection, volumeId, rebuilder.info.Id, generatedShardIds) err = mountEcShards(ctx, commandEnv.option.GrpcDialOption, collection, volumeId, rebuilder.info.Id, generatedShardIds)

Loading…
Cancel
Save