volume: dataFileAccessLock change to RW Lock

This commit is contained in:
Chris Lu 2019-12-06 06:59:57 -08:00
parent 81f424a630
commit 6827cabfbb
3 changed files with 19 additions and 19 deletions

View File

@ -30,7 +30,7 @@ type Volume struct {
SuperBlock SuperBlock
dataFileAccessLock sync.Mutex dataFileAccessLock sync.RWMutex
lastModifiedTsSeconds uint64 //unix time in seconds lastModifiedTsSeconds uint64 //unix time in seconds
lastAppendAtNs uint64 //unix time in nanoseconds lastAppendAtNs uint64 //unix time in nanoseconds
@ -72,8 +72,8 @@ func (v *Volume) Version() needle.Version {
} }
func (v *Volume) FileStat() (datSize uint64, idxSize uint64, modTime time.Time) { func (v *Volume) FileStat() (datSize uint64, idxSize uint64, modTime time.Time) {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
if v.DataBackend == nil { if v.DataBackend == nil {
return return
@ -88,8 +88,8 @@ func (v *Volume) FileStat() (datSize uint64, idxSize uint64, modTime time.Time)
} }
func (v *Volume) ContentSize() uint64 { func (v *Volume) ContentSize() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
if v.nm == nil { if v.nm == nil {
return 0 return 0
} }
@ -97,8 +97,8 @@ func (v *Volume) ContentSize() uint64 {
} }
func (v *Volume) DeletedSize() uint64 { func (v *Volume) DeletedSize() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
if v.nm == nil { if v.nm == nil {
return 0 return 0
} }
@ -106,8 +106,8 @@ func (v *Volume) DeletedSize() uint64 {
} }
func (v *Volume) FileCount() uint64 { func (v *Volume) FileCount() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
if v.nm == nil { if v.nm == nil {
return 0 return 0
} }
@ -115,8 +115,8 @@ func (v *Volume) FileCount() uint64 {
} }
func (v *Volume) DeletedCount() uint64 { func (v *Volume) DeletedCount() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
if v.nm == nil { if v.nm == nil {
return 0 return 0
} }
@ -124,8 +124,8 @@ func (v *Volume) DeletedCount() uint64 {
} }
func (v *Volume) MaxFileKey() types.NeedleId { func (v *Volume) MaxFileKey() types.NeedleId {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
if v.nm == nil { if v.nm == nil {
return 0 return 0
} }
@ -133,8 +133,8 @@ func (v *Volume) MaxFileKey() types.NeedleId {
} }
func (v *Volume) IndexFileSize() uint64 { func (v *Volume) IndexFileSize() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
if v.nm == nil { if v.nm == nil {
return 0 return 0
} }

View File

@ -15,8 +15,8 @@ import (
) )
func (v *Volume) GetVolumeSyncStatus() *volume_server_pb.VolumeSyncStatusResponse { func (v *Volume) GetVolumeSyncStatus() *volume_server_pb.VolumeSyncStatusResponse {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
var syncStatus = &volume_server_pb.VolumeSyncStatusResponse{} var syncStatus = &volume_server_pb.VolumeSyncStatusResponse{}
if datSize, _, err := v.DataBackend.GetStat(); err == nil { if datSize, _, err := v.DataBackend.GetStat(); err == nil {

View File

@ -136,8 +136,8 @@ func (v *Volume) deleteNeedle(n *needle.Needle) (uint32, error) {
// read fills in Needle content by looking up n.Id from NeedleMapper // read fills in Needle content by looking up n.Id from NeedleMapper
func (v *Volume) readNeedle(n *needle.Needle) (int, error) { func (v *Volume) readNeedle(n *needle.Needle) (int, error) {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.RLock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.RUnlock()
nv, ok := v.nm.Get(n.Id) nv, ok := v.nm.Get(n.Id)
if !ok || nv.Offset.IsZero() { if !ok || nv.Offset.IsZero() {