mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-11-28 21:39:02 +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
|
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
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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() {
|
||||||
|
Loading…
Reference in New Issue
Block a user