diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-06-03 00:13:31 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-06-03 00:13:31 -0700 |
| commit | 55be09996d8f82e461e1c464db82707c982b2b57 (patch) | |
| tree | bd5564d5460ff76b610650e9979019bf2afcfb99 | |
| parent | 9ce6b949bf778e16cbf0f2e73ad508c65c3c8fc3 (diff) | |
| download | seaweedfs-55be09996d8f82e461e1c464db82707c982b2b57.tar.xz seaweedfs-55be09996d8f82e461e1c464db82707c982b2b57.zip | |
fix volume balance bug
| -rw-r--r-- | weed/server/volume_grpc_copy.go | 12 | ||||
| -rw-r--r-- | weed/shell/command_volume_balance.go | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/weed/server/volume_grpc_copy.go b/weed/server/volume_grpc_copy.go index 186c378ef..20778b71f 100644 --- a/weed/server/volume_grpc_copy.go +++ b/weed/server/volume_grpc_copy.go @@ -49,7 +49,7 @@ func (vs *VolumeServer) VolumeCopy(ctx context.Context, req *volume_server_pb.Vo return fmt.Errorf("read volume file status failed, %v", err) } - volumeFileName = storage.VolumeFileName(volFileInfoResp.Collection, location.Directory, int(req.VolumeId)) + volumeFileName = storage.VolumeFileName(location.Directory, volFileInfoResp.Collection, int(req.VolumeId)) // println("source:", volFileInfoResp.String()) // copy ecx file @@ -63,6 +63,10 @@ func (vs *VolumeServer) VolumeCopy(ctx context.Context, req *volume_server_pb.Vo return nil }) + + idxFileName = volumeFileName + ".idx" + datFileName = volumeFileName + ".dat" + if err != nil && volumeFileName != "" { if idxFileName != "" { os.Remove(idxFileName) @@ -117,11 +121,11 @@ todo: maybe should check the received count and deleted count of the volume func checkCopyFiles(originFileInf *volume_server_pb.ReadVolumeFileStatusResponse, idxFileName, datFileName string) error { stat, err := os.Stat(idxFileName) if err != nil { - return fmt.Errorf("get idx file info failed, %v", err) + return fmt.Errorf("stat idx file %s failed, %v", idxFileName, err) } if originFileInf.IdxFileSize != uint64(stat.Size()) { - return fmt.Errorf("the idx file size [%v] is not same as origin file size [%v]", - stat.Size(), originFileInf.IdxFileSize) + return fmt.Errorf("idx file %s size [%v] is not same as origin file size [%v]", + idxFileName, stat.Size(), originFileInf.IdxFileSize) } stat, err = os.Stat(datFileName) diff --git a/weed/shell/command_volume_balance.go b/weed/shell/command_volume_balance.go index f440dc5d2..2a5731333 100644 --- a/weed/shell/command_volume_balance.go +++ b/weed/shell/command_volume_balance.go @@ -5,6 +5,7 @@ import ( "flag" "fmt" "io" + "math" "os" "sort" "time" @@ -186,7 +187,7 @@ func balanceSelectedVolume(commandEnv *commandEnv, nodes []*Node, sortCandidates selectedVolumeCount += len(dn.selectedVolumes) } - idealSelectedVolumes := selectedVolumeCount / len(nodes) + idealSelectedVolumes := int(math.Ceil(float64(selectedVolumeCount) / float64(len(nodes)))) hasMove := true |
