possible fix for rare panic
This commit is contained in:
parent
f0af1fb04d
commit
88861102fd
4 changed files with 20 additions and 17 deletions
|
|
@ -475,9 +475,6 @@ func (md *Metadata) writer() {
|
|||
}
|
||||
|
||||
func (md *Metadata) WriteAt(data []byte, pos int64) (int, error) {
|
||||
if md.ctx.Err() == context.Canceled {
|
||||
return 0, context.Canceled
|
||||
}
|
||||
err := md.err.Load()
|
||||
if err != nil && err.err != nil {
|
||||
return 0, err.err
|
||||
|
|
@ -488,6 +485,9 @@ func (md *Metadata) WriteAt(data []byte, pos int64) (int, error) {
|
|||
return 0, err
|
||||
}
|
||||
}
|
||||
if md.ctx.Err() == context.Canceled {
|
||||
return 0, context.Canceled
|
||||
}
|
||||
wa := writeAt{pos: pos}
|
||||
ret := streamingPool.Get()
|
||||
n := len(data)
|
||||
|
|
@ -507,6 +507,16 @@ func (md *Metadata) WriteAt(data []byte, pos int64) (int, error) {
|
|||
return n, nil
|
||||
}
|
||||
|
||||
func (md *Metadata) Stat() (os.FileInfo, error) {
|
||||
if md.f == nil {
|
||||
err := md.openCacheFile()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return md.f.Stat()
|
||||
}
|
||||
|
||||
func (md *Metadata) openCacheFile() error {
|
||||
md.mu.Lock()
|
||||
defer md.mu.Unlock()
|
||||
|
|
@ -525,13 +535,3 @@ func (md *Metadata) openCacheFile() error {
|
|||
md.writer()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (md *Metadata) Stat() (os.FileInfo, error) {
|
||||
if md.f == nil {
|
||||
err := md.openCacheFile()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return md.f.Stat()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue