shithub: hugo

Download patch

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
--