diff options
Diffstat (limited to 'weed/storage/volume.go')
| -rw-r--r-- | weed/storage/volume.go | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/weed/storage/volume.go b/weed/storage/volume.go index a5e923547..a2e34bd04 100644 --- a/weed/storage/volume.go +++ b/weed/storage/volume.go @@ -6,6 +6,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/pb/master_pb" "github.com/chrislusf/seaweedfs/weed/stats" "github.com/chrislusf/seaweedfs/weed/storage/needle" + "github.com/chrislusf/seaweedfs/weed/storage/types" "os" "path" @@ -85,14 +86,54 @@ func (v *Volume) FileStat() (datSize uint64, idxSize uint64, modTime time.Time) return // -1 causes integer overflow and the volume to become unwritable. } -func (v *Volume) IndexFileSize() uint64 { - return v.nm.IndexFileSize() +func (v *Volume) ContentSize() uint64 { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() + return v.nm.ContentSize() +} + +func (v *Volume) DeletedSize() uint64 { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() + return v.nm.DeletedSize() } func (v *Volume) FileCount() uint64 { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() return uint64(v.nm.FileCount()) } +func (v *Volume) DeletedCount() uint64 { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() + return uint64(v.nm.DeletedCount()) +} + +func (v *Volume) MaxFileKey() types.NeedleId { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() + return v.nm.MaxFileKey() +} + +func (v *Volume) IndexFileSize() uint64 { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() + return v.nm.IndexFileSize() +} + +func (v *Volume) IndexFileContent() ([]byte, error) { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() + return v.nm.IndexFileContent() +} + +func (v *Volume) IndexFileName() string { + v.dataFileAccessLock.Lock() + defer v.dataFileAccessLock.Unlock() + return v.nm.IndexFileName() +} + // Close cleanly shuts down this volume func (v *Volume) Close() { v.dataFileAccessLock.Lock() @@ -112,10 +153,6 @@ func (v *Volume) NeedToReplicate() bool { return v.ReplicaPlacement.GetCopyCount() > 1 } -func (v *Volume) ContentSize() uint64 { - return v.nm.ContentSize() -} - // volume is expired if modified time + volume ttl < now // except when volume is empty // or when the volume does not have a ttl @@ -158,13 +195,14 @@ func (v *Volume) expiredLongEnough(maxDelayMinutes uint32) bool { func (v *Volume) ToVolumeInformationMessage() *master_pb.VolumeInformationMessage { size, _, modTime := v.FileStat() + return &master_pb.VolumeInformationMessage{ Id: uint32(v.Id), Size: size, Collection: v.Collection, - FileCount: uint64(v.nm.FileCount()), - DeleteCount: uint64(v.nm.DeletedCount()), - DeletedByteCount: v.nm.DeletedSize(), + FileCount: uint64(v.FileCount()), + DeleteCount: uint64(v.DeletedCount()), + DeletedByteCount: v.DeletedSize(), ReadOnly: v.readOnly, ReplicaPlacement: uint32(v.ReplicaPlacement.Byte()), Version: uint32(v.Version()), |
