mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-11-24 19:19:11 +08:00
volume: dataFileAccessLock change to RW Lock
This commit is contained in:
parent
81f424a630
commit
6827cabfbb
@ -30,7 +30,7 @@ type Volume struct {
|
||||
|
||||
SuperBlock
|
||||
|
||||
dataFileAccessLock sync.Mutex
|
||||
dataFileAccessLock sync.RWMutex
|
||||
lastModifiedTsSeconds uint64 //unix time in seconds
|
||||
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) {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
|
||||
if v.DataBackend == nil {
|
||||
return
|
||||
@ -88,8 +88,8 @@ func (v *Volume) FileStat() (datSize uint64, idxSize uint64, modTime time.Time)
|
||||
}
|
||||
|
||||
func (v *Volume) ContentSize() uint64 {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
if v.nm == nil {
|
||||
return 0
|
||||
}
|
||||
@ -97,8 +97,8 @@ func (v *Volume) ContentSize() uint64 {
|
||||
}
|
||||
|
||||
func (v *Volume) DeletedSize() uint64 {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
if v.nm == nil {
|
||||
return 0
|
||||
}
|
||||
@ -106,8 +106,8 @@ func (v *Volume) DeletedSize() uint64 {
|
||||
}
|
||||
|
||||
func (v *Volume) FileCount() uint64 {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
if v.nm == nil {
|
||||
return 0
|
||||
}
|
||||
@ -115,8 +115,8 @@ func (v *Volume) FileCount() uint64 {
|
||||
}
|
||||
|
||||
func (v *Volume) DeletedCount() uint64 {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
if v.nm == nil {
|
||||
return 0
|
||||
}
|
||||
@ -124,8 +124,8 @@ func (v *Volume) DeletedCount() uint64 {
|
||||
}
|
||||
|
||||
func (v *Volume) MaxFileKey() types.NeedleId {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
if v.nm == nil {
|
||||
return 0
|
||||
}
|
||||
@ -133,8 +133,8 @@ func (v *Volume) MaxFileKey() types.NeedleId {
|
||||
}
|
||||
|
||||
func (v *Volume) IndexFileSize() uint64 {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
if v.nm == nil {
|
||||
return 0
|
||||
}
|
||||
|
@ -15,8 +15,8 @@ import (
|
||||
)
|
||||
|
||||
func (v *Volume) GetVolumeSyncStatus() *volume_server_pb.VolumeSyncStatusResponse {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
|
||||
var syncStatus = &volume_server_pb.VolumeSyncStatusResponse{}
|
||||
if datSize, _, err := v.DataBackend.GetStat(); err == nil {
|
||||
|
@ -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
|
||||
func (v *Volume) readNeedle(n *needle.Needle) (int, error) {
|
||||
v.dataFileAccessLock.Lock()
|
||||
defer v.dataFileAccessLock.Unlock()
|
||||
v.dataFileAccessLock.RLock()
|
||||
defer v.dataFileAccessLock.RUnlock()
|
||||
|
||||
nv, ok := v.nm.Get(n.Id)
|
||||
if !ok || nv.Offset.IsZero() {
|
||||
|
Loading…
Reference in New Issue
Block a user