func()

in pkg/files/store/file.go [77:100]


func (f *file) Fstat() (int64, error) {
	var hit bool

	f.size, hit = f.store.cache.Size(f.Name)
	if !hit {
		f.reader.Log().Debug().Str("name", f.Name).Int64("size", f.size).Msg("fstat getlen cache miss_1")
		f.statLock.Lock()
		f.size, hit = f.store.cache.Size(f.Name)
		if !hit {
			f.reader.Log().Debug().Str("name", f.Name).Int64("size", f.size).Msg("fstat getlen cache miss_2")
			var err error
			f.size, err = f.reader.FstatRemote()
			if err != nil {
				f.reader.Log().Error().Err(err).Msg("fstat error")
				return 0, err
			}
			f.store.cache.PutSize(f.Name, f.size)
			f.reader.Log().Debug().Str("name", f.Name).Int64("size", f.size).Msg("fstat putlen")
		}
		f.statLock.Unlock()
	}

	return f.size, nil
}