ref: 6233ddf9d19b51f69c0c4a796d88732d1700e585
parent: e66d813bcb4fcd3621c9bfa7e232a30f5a372398
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Thu Nov 16 06:59:45 EST 2017
tpl/partials: Fix the lock contention in cached partial Fixes #4086
--- a/tpl/partials/partials.go
+++ b/tpl/partials/partials.go
@@ -120,19 +120,17 @@
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
--
⑨