diff options
| author | chrislu <chris.lu@gmail.com> | 2024-08-18 12:08:43 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2024-08-18 12:08:43 -0700 |
| commit | e8462ba3ad00563b53865c9036507795fd50be12 (patch) | |
| tree | 2cd65b5f611ae91008f5acff81eefb7274f29889 | |
| parent | db833abfa22b77ac51177564808bc146a08e4770 (diff) | |
| download | seaweedfs-e8462ba3ad00563b53865c9036507795fd50be12.tar.xz seaweedfs-e8462ba3ad00563b53865c9036507795fd50be12.zip | |
prevent compacting on the same volume
| -rw-r--r-- | weed/storage/volume_vacuum.go | 12 |
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 |
