From e7aaa24da85eaf5637a2ff3e4bac4082c17d708c Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 19 May 2014 19:24:35 -0700 Subject: [PATCH] Refactor out volume vacuum. --- go/storage/volume.go | 28 ---------------------------- go/storage/volume_vacuum.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 go/storage/volume_vacuum.go diff --git a/go/storage/volume.go b/go/storage/volume.go index 9ec112c57..bfdac8edf 100644 --- a/go/storage/volume.go +++ b/go/storage/volume.go @@ -281,34 +281,6 @@ func (v *Volume) read(n *Needle) (int, error) { return -1, errors.New("Not Found") } -func (v *Volume) garbageLevel() float64 { - return float64(v.nm.DeletedSize()) / float64(v.ContentSize()) -} - -func (v *Volume) Compact() error { - v.accessLock.Lock() - defer v.accessLock.Unlock() - - filePath := v.FileName() - glog.V(3).Infof("creating copies for volume %d ...", v.Id) - return v.copyDataAndGenerateIndexFile(filePath+".cpd", filePath+".cpx") -} -func (v *Volume) commitCompact() error { - v.accessLock.Lock() - defer v.accessLock.Unlock() - _ = v.dataFile.Close() - var e error - if e = os.Rename(v.FileName()+".cpd", v.FileName()+".dat"); e != nil { - return e - } - if e = os.Rename(v.FileName()+".cpx", v.FileName()+".idx"); e != nil { - return e - } - if e = v.load(true, false); e != nil { - return e - } - return nil -} func (v *Volume) freeze() error { if v.readOnly { return nil diff --git a/go/storage/volume_vacuum.go b/go/storage/volume_vacuum.go new file mode 100644 index 000000000..8b36bb378 --- /dev/null +++ b/go/storage/volume_vacuum.go @@ -0,0 +1,35 @@ +package storage + +import ( + "code.google.com/p/weed-fs/go/glog" + "os" +) + +func (v *Volume) garbageLevel() float64 { + return float64(v.nm.DeletedSize()) / float64(v.ContentSize()) +} + +func (v *Volume) Compact() error { + v.accessLock.Lock() + defer v.accessLock.Unlock() + + filePath := v.FileName() + glog.V(3).Infof("creating copies for volume %d ...", v.Id) + return v.copyDataAndGenerateIndexFile(filePath+".cpd", filePath+".cpx") +} +func (v *Volume) commitCompact() error { + v.accessLock.Lock() + defer v.accessLock.Unlock() + _ = v.dataFile.Close() + var e error + if e = os.Rename(v.FileName()+".cpd", v.FileName()+".dat"); e != nil { + return e + } + if e = os.Rename(v.FileName()+".cpx", v.FileName()+".idx"); e != nil { + return e + } + if e = v.load(true, false); e != nil { + return e + } + return nil +}