Improve RW-locking of template in shortcode handling

See #1599
This commit is contained in:
Bjørn Erik Pedersen 2015-11-21 21:57:26 +01:00
parent 58c446f562
commit c5f40e8b8b

View file

@ -345,12 +345,12 @@ Loop:
}
// TODO(bep) Refactor/rename this lock strategy
isInnerShortcodeCache.Lock()
isInnerShortcodeCache.RLock()
if tmpl.Tree == nil {
isInnerShortcodeCache.Unlock()
isInnerShortcodeCache.RUnlock()
return sc, fmt.Errorf("Template for shortcode '%s' failed to compile for page '%s'", sc.name, p.BaseFileName())
}
isInnerShortcodeCache.Unlock()
isInnerShortcodeCache.RUnlock()
isInner = isInnerShortcode(tmpl)
case tScParam:
@ -523,6 +523,9 @@ func renderShortcodeWithPage(tmpl *template.Template, data *ShortcodeWithPage) s
buffer := bp.GetBuffer()
defer bp.PutBuffer(buffer)
// TODO(bep) Refactor/rename this lock strategy
isInnerShortcodeCache.Lock()
defer isInnerShortcodeCache.Unlock()
err := tmpl.Execute(buffer, data)
if err != nil {
jww.ERROR.Println("error processing shortcode", tmpl.Name(), "\n ERR:", err)