summaryrefslogtreecommitdiffstats
path: root/tpl/partials
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-11-16 11:59:45 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-11-16 11:59:45 +0100
commit6233ddf9d19b51f69c0c4a796d88732d1700e585 (patch)
tree7d049e63a71ebd3e13dff02cfd56f5c00716f1a9 /tpl/partials
parente66d813bcb4fcd3621c9bfa7e232a30f5a372398 (diff)
tpl/partials: Fix the lock contention in cached partial
Fixes #4086
Diffstat (limited to 'tpl/partials')
-rw-r--r--tpl/partials/partials.go14
1 files changed, 6 insertions, 8 deletions
diff --git a/tpl/partials/partials.go b/tpl/partials/partials.go
index d999041be..beb09f426 100644
--- a/tpl/partials/partials.go
+++ b/tpl/partials/partials.go
@@ -120,19 +120,17 @@ func (ns *Namespace) getOrCreate(key, name string, context interface{}) (interfa
return p, nil
}
- ns.cachedPartials.Lock()
- defer ns.cachedPartials.Unlock()
-
- // Double-check.
- if p, ok = ns.cachedPartials.p[key]; ok {
- return p, nil
- }
-
p, err := ns.Include(name, context)
if err != nil {
return nil, err
}
+ ns.cachedPartials.Lock()
+ defer ns.cachedPartials.Unlock()
+ // Double-check.
+ if p2, ok := ns.cachedPartials.p[key]; ok {
+ return p2, nil
+ }
ns.cachedPartials.p[key] = p
return p, nil