aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_volume_delete_empty.go
diff options
context:
space:
mode:
author柏杰 <2063169+bai-jie@users.noreply.github.com>2023-06-15 05:39:58 +0800
committerGitHub <noreply@github.com>2023-06-14 14:39:58 -0700
commit0b0fb9b9e4835265abf71e0b0f384fe9bbfce3ea (patch)
tree25ad4e2a258b03c0a8d5080ff6431de3000795e9 /weed/shell/command_volume_delete_empty.go
parent1e22d5caf2f34df5886b464f16948a294d429657 (diff)
downloadseaweedfs-0b0fb9b9e4835265abf71e0b0f384fe9bbfce3ea.tar.xz
seaweedfs-0b0fb9b9e4835265abf71e0b0f384fe9bbfce3ea.zip
avoid data race read volume.IsEmpty (#4574)
* avoid data race read volume.IsEmpty - avoid phantom read isEmpty for onlyEmpty - use `v.DataBackend.GetStat()` in v.dataFileAccessLock scope * add Destroy(onlyEmpty: true) test * add Destroy(onlyEmpty: false) test * remove unused `IsEmpty()` * change literal `8` to `SuperBlockSize`
Diffstat (limited to 'weed/shell/command_volume_delete_empty.go')
-rw-r--r--weed/shell/command_volume_delete_empty.go3
1 files changed, 2 insertions, 1 deletions
diff --git a/weed/shell/command_volume_delete_empty.go b/weed/shell/command_volume_delete_empty.go
index f02cf87d9..bb0a194e0 100644
--- a/weed/shell/command_volume_delete_empty.go
+++ b/weed/shell/command_volume_delete_empty.go
@@ -5,6 +5,7 @@ import (
"github.com/seaweedfs/seaweedfs/weed/pb"
"github.com/seaweedfs/seaweedfs/weed/pb/master_pb"
"github.com/seaweedfs/seaweedfs/weed/storage/needle"
+ "github.com/seaweedfs/seaweedfs/weed/storage/super_block"
"io"
"log"
"time"
@@ -57,7 +58,7 @@ func (c *commandVolumeDeleteEmpty) Do(args []string, commandEnv *CommandEnv, wri
eachDataNode(topologyInfo, func(dc string, rack RackId, dn *master_pb.DataNodeInfo) {
for _, diskInfo := range dn.DiskInfos {
for _, v := range diskInfo.VolumeInfos {
- if v.Size <= 8 && v.ModifiedAtSecond > 0 && v.ModifiedAtSecond+quietSeconds < nowUnixSeconds {
+ if v.Size <= super_block.SuperBlockSize && v.ModifiedAtSecond > 0 && v.ModifiedAtSecond+quietSeconds < nowUnixSeconds {
if *applyBalancing {
log.Printf("deleting empty volume %d from %s", v.Id, dn.Id)
if deleteErr := deleteVolume(commandEnv.option.GrpcDialOption, needle.VolumeId(v.Id),