nandi/gleanpublic Fork 0
57d67c7
Commits
Clone
git clone https://git.rickub.com/nandi/glean.git
git clone ssh://git@rickub.com/nandi/glean.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Use sync.Pool for bytes.Buffer in template renderingUnverified

Julien Robert committed 2026-06-10T21:00:47+02:00 Browse files
57d67c7 parent: e7ec090
modified internal/server/server.go +11 -2
@@ -54,6 +54,12 @@ var oauthScopes = []string{
5454 "rpc:app.bsky.actor.getProfile?aud=*",
5555 }
5656
57+var bufPool = sync.Pool{
58+ New: func() any {
59+ return new(bytes.Buffer)
60+ },
61+}
62+
5763 func splitString(s, sep string) []string {
5864 return strings.Split(s, sep)
5965 }
@@ -604,8 +610,11 @@ func (s *Server) render(w http.ResponseWriter, r *http.Request, name string, dat
604610 return
605611 }
606612
607- var buf bytes.Buffer
608- if err := s.templates.ExecuteTemplate(&buf, name, data); err != nil {
613+ buf := bufPool.Get().(*bytes.Buffer)
614+ buf.Reset()
615+ defer bufPool.Put(buf)
616+
617+ if err := s.templates.ExecuteTemplate(buf, name, data); err != nil {
609618 s.logger.Error("template error", "error", err, "template", name)
610619 http.Error(w, err.Error(), http.StatusInternalServerError)
611620 return
@@ -54,6 +54,12 @@ var oauthScopes = []string{
54 "rpc:app.bsky.actor.getProfile?aud=*",54 "rpc:app.bsky.actor.getProfile?aud=*",
55 }55 }
56 56
57+var bufPool = sync.Pool{
58+ New: func() any {
59+ return new(bytes.Buffer)
60+ },
61+}
62+
57 func splitString(s, sep string) []string {63 func splitString(s, sep string) []string {
58 return strings.Split(s, sep)64 return strings.Split(s, sep)
59 }65 }
@@ -604,8 +610,11 @@ func (s *Server) render(w http.ResponseWriter, r *http.Request, name string, dat
604 return610 return
605 }611 }
606 612
607- var buf bytes.Buffer613+ buf := bufPool.Get().(*bytes.Buffer)
608- if err := s.templates.ExecuteTemplate(&buf, name, data); err != nil {614+ buf.Reset()
615+ defer bufPool.Put(buf)
616+
617+ if err := s.templates.ExecuteTemplate(buf, name, data); err != nil {
609 s.logger.Error("template error", "error", err, "template", name)618 s.logger.Error("template error", "error", err, "template", name)
610 http.Error(w, err.Error(), http.StatusInternalServerError)619 http.Error(w, err.Error(), http.StatusInternalServerError)
611 return620 return