From 399da4400d57012157d9a987d1be95959fcd47d0 Mon Sep 17 00:00:00 2001 From: Hugo Landau Date: Wed, 12 Nov 2014 09:44:03 +0000 Subject: [PATCH] Concurrency fixes --- backend/backend.go | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/backend/backend.go b/backend/backend.go index b1e64ea..04f8c81 100644 --- a/backend/backend.go +++ b/backend/backend.go @@ -87,11 +87,8 @@ func toNamecoinName(basename string) (string, error) { } func (b *Backend) getNamecoinEntry(name string) (*domain, error) { - b.cacheMutex.Lock() - defer b.cacheMutex.Unlock() - - if dd, ok := b.cache.Get(name); ok { - d := dd.(*domain) + d := b.getNamecoinEntryCache(name) + if d != nil { return d, nil } @@ -100,10 +97,29 @@ func (b *Backend) getNamecoinEntry(name string) (*domain, error) { return nil, err } - b.cache.Add(name, d) + b.addNamecoinEntryToCache(name, d) return d, nil } +func (b *Backend) getNamecoinEntryCache(name string) *domain { + b.cacheMutex.Lock() + defer b.cacheMutex.Unlock() + + if dd, ok := b.cache.Get(name); ok { + d := dd.(*domain) + return d + } + + return nil +} + +func (b *Backend) addNamecoinEntryToCache(name string, d *domain) { + b.cacheMutex.Lock() + defer b.cacheMutex.Unlock() + + b.cache.Add(name, d) +} + func (b *Backend) getNamecoinEntryLL(name string) (*domain, error) { v, err := b.nc.Query(name) if err != nil {