aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2024-08-18 12:08:43 -0700
committerchrislu <chris.lu@gmail.com>2024-08-18 12:08:43 -0700
commite8462ba3ad00563b53865c9036507795fd50be12 (patch)
tree2cd65b5f611ae91008f5acff81eefb7274f29889
parentdb833abfa22b77ac51177564808bc146a08e4770 (diff)
downloadseaweedfs-e8462ba3ad00563b53865c9036507795fd50be12.tar.xz
seaweedfs-e8462ba3ad00563b53865c9036507795fd50be12.zip
prevent compacting on the same volume
-rw-r--r--weed/storage/volume_vacuum.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/weed/storage/volume_vacuum.go b/weed/storage/volume_vacuum.go
index 6bbbde71d..9f277d4f5 100644
--- a/weed/storage/volume_vacuum.go
+++ b/weed/storage/volume_vacuum.go
@@ -46,6 +46,10 @@ func (v *Volume) Compact(preallocate int64, compactionBytePerSecond int64) error
//v.accessLock.Lock()
//defer v.accessLock.Unlock()
//glog.V(3).Infof("Got Compaction lock...")
+ if v.isCompacting || v.isCommitCompacting {
+ glog.V(0).Infof("Volume %d is already compacting...", v.Id)
+ return nil
+ }
v.isCompacting = true
defer func() {
v.isCompacting = false
@@ -71,6 +75,10 @@ func (v *Volume) Compact2(preallocate int64, compactionBytePerSecond int64, prog
}
glog.V(3).Infof("Compact2 volume %d ...", v.Id)
+ if v.isCompacting || v.isCommitCompacting {
+ glog.V(0).Infof("Volume %d is already compacting2 ...", v.Id)
+ return nil
+ }
v.isCompacting = true
defer func() {
v.isCompacting = false
@@ -105,6 +113,10 @@ func (v *Volume) CommitCompact() error {
}
glog.V(0).Infof("Committing volume %d vacuuming...", v.Id)
+ if v.isCommitCompacting {
+ glog.V(0).Infof("Volume %d is already commit compacting ...", v.Id)
+ return nil
+ }
v.isCommitCompacting = true
defer func() {
v.isCommitCompacting = false