Selaa lähdekoodia

Fix releasing page mutex during template execution

Svilen Markov 7 kuukautta sitten
vanhempi
commit
d4b1d240b9
1 muutettua tiedostoa jossa 10 lisäystä ja 6 poistoa
  1. 10 6
      internal/glance/glance.go

+ 10 - 6
internal/glance/glance.go

@@ -92,9 +92,6 @@ func newApplication(config *config) (*application, error) {
 }
 
 func (p *page) updateOutdatedWidgets() {
-	p.mu.Lock()
-	defer p.mu.Unlock()
-
 	now := time.Now()
 
 	var wg sync.WaitGroup
@@ -168,10 +165,17 @@ func (a *application) handlePageContentRequest(w http.ResponseWriter, r *http.Re
 		Page: page,
 	}
 
-	page.updateOutdatedWidgets()
-
+	var err error
 	var responseBytes bytes.Buffer
-	err := pageContentTemplate.Execute(&responseBytes, pageData)
+
+	func() {
+		page.mu.Lock()
+		defer page.mu.Unlock()
+
+		page.updateOutdatedWidgets()
+		err = pageContentTemplate.Execute(&responseBytes, pageData)
+	}()
+
 	if err != nil {
 		w.WriteHeader(http.StatusInternalServerError)
 		w.Write([]byte(err.Error()))