avoid nil needle map

fix https://github.com/chrislusf/seaweedfs/issues/1061
This commit is contained in:
Chris Lu 2019-09-09 09:48:08 -07:00
parent 972b974f6c
commit 0f861d23a2

View file

@ -89,48 +89,72 @@ 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.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return 0
}
return v.nm.ContentSize() return v.nm.ContentSize()
} }
func (v *Volume) DeletedSize() uint64 { func (v *Volume) DeletedSize() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return 0
}
return v.nm.DeletedSize() return v.nm.DeletedSize()
} }
func (v *Volume) FileCount() uint64 { func (v *Volume) FileCount() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return 0
}
return uint64(v.nm.FileCount()) return uint64(v.nm.FileCount())
} }
func (v *Volume) DeletedCount() uint64 { func (v *Volume) DeletedCount() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return 0
}
return uint64(v.nm.DeletedCount()) return uint64(v.nm.DeletedCount())
} }
func (v *Volume) MaxFileKey() types.NeedleId { func (v *Volume) MaxFileKey() types.NeedleId {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return 0
}
return v.nm.MaxFileKey() return v.nm.MaxFileKey()
} }
func (v *Volume) IndexFileSize() uint64 { func (v *Volume) IndexFileSize() uint64 {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return 0
}
return v.nm.IndexFileSize() return v.nm.IndexFileSize()
} }
func (v *Volume) IndexFileContent() ([]byte, error) { func (v *Volume) IndexFileContent() ([]byte, error) {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return nil, nil
}
return v.nm.IndexFileContent() return v.nm.IndexFileContent()
} }
func (v *Volume) IndexFileName() string { func (v *Volume) IndexFileName() string {
v.dataFileAccessLock.Lock() v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock() defer v.dataFileAccessLock.Unlock()
if v.nm == nil {
return ""
}
return v.nm.IndexFileName() return v.nm.IndexFileName()
} }