[#472] blobstor: check for blobovnicza without mutex first
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
828c8695c1
commit
62b8958177
1 changed files with 9 additions and 1 deletions
|
@ -807,11 +807,19 @@ func (b *blobovniczas) close() error {
|
||||||
//
|
//
|
||||||
// If blobovnicza is already opened and cached, instance from cache is returned w/o changes.
|
// If blobovnicza is already opened and cached, instance from cache is returned w/o changes.
|
||||||
func (b *blobovniczas) openBlobovnicza(p string) (*blobovnicza.Blobovnicza, error) {
|
func (b *blobovniczas) openBlobovnicza(p string) (*blobovnicza.Blobovnicza, error) {
|
||||||
|
b.lruMtx.Lock()
|
||||||
|
v, ok := b.opened.Get(p)
|
||||||
|
b.lruMtx.Unlock()
|
||||||
|
if ok {
|
||||||
|
// blobovnicza should be opened in cache
|
||||||
|
return v.(*blobovnicza.Blobovnicza), nil
|
||||||
|
}
|
||||||
|
|
||||||
b.openMtx.Lock()
|
b.openMtx.Lock()
|
||||||
defer b.openMtx.Unlock()
|
defer b.openMtx.Unlock()
|
||||||
|
|
||||||
b.lruMtx.Lock()
|
b.lruMtx.Lock()
|
||||||
v, ok := b.opened.Get(p)
|
v, ok = b.opened.Get(p)
|
||||||
b.lruMtx.Unlock()
|
b.lruMtx.Unlock()
|
||||||
if ok {
|
if ok {
|
||||||
// blobovnicza should be opened in cache
|
// blobovnicza should be opened in cache
|
||||||
|
|
Loading…
Reference in a new issue