aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_fs_merge_volumes.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/shell/command_fs_merge_volumes.go')
-rw-r--r--weed/shell/command_fs_merge_volumes.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/weed/shell/command_fs_merge_volumes.go b/weed/shell/command_fs_merge_volumes.go
index eb401aab1..9499d07bf 100644
--- a/weed/shell/command_fs_merge_volumes.go
+++ b/weed/shell/command_fs_merge_volumes.go
@@ -206,6 +206,15 @@ func (c *commandFsMergeVolumes) createMergePlan(collection string, toVolumeId ne
for i := 0; i < l; i++ {
volume := c.volumes[volumes[i]]
if volume.GetReadOnly() || c.getVolumeSize(volume) == 0 || (collection != "*" && collection != volume.GetCollection()) {
+
+ if fromVolumeId != 0 && volumes[i] == fromVolumeId || toVolumeId != 0 && volumes[i] == toVolumeId {
+ if volume.GetReadOnly() {
+ return nil, fmt.Errorf("volume %d is readonly", volumes[i])
+ }
+ if c.getVolumeSize(volume) == 0 {
+ return nil, fmt.Errorf("volume %d is empty", volumes[i])
+ }
+ }
volumes = slices.Delete(volumes, i, i+1)
i--
l--
@@ -229,9 +238,14 @@ func (c *commandFsMergeVolumes) createMergePlan(collection string, toVolumeId ne
return nil, err
}
if !compatible {
+ fmt.Printf("volume %d is not compatible with volume %d\n", src, condidate)
continue
}
if c.getVolumeSizeBasedOnPlan(plan, condidate)+c.getVolumeSizeById(src) > c.volumeSizeLimit {
+ fmt.Printf("volume %d (%d MB) merge into volume %d (%d MB) exceeds volume size limit (%d MB)\n",
+ src, c.getVolumeSizeById(src)/1024/1024,
+ condidate, c.getVolumeSizeById(condidate)/1024/1024,
+ c.volumeSizeLimit/1024/1024)
continue
}
plan[src] = condidate