- commit
- 780f9e1
- parent
- fbdea17
- author
- Eric Bower
- date
- 2025-12-15 23:01:27 -0500 EST
fix(pgs): memory leaks All changes replace defer with immediate Close() calls to ensure resources are released promptly rather than accumulating until function return.
1 files changed,
+5,
-9
+5,
-9
1@@ -51,10 +51,8 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
2 logger.Info("_redirects not found in lru cache", "key", redirectsCacheKey)
3 redirectFp, redirectInfo, err := h.Cfg.Storage.GetObject(h.Bucket, filepath.Join(h.ProjectDir, "_redirects"))
4 if err == nil {
5- defer func() {
6- _ = redirectFp.Close()
7- }()
8 if redirectInfo != nil && redirectInfo.Size > h.Cfg.MaxSpecialFileSize {
9+ _ = redirectFp.Close()
10 errMsg := fmt.Sprintf("_redirects file is too large (%d > %d)", redirectInfo.Size, h.Cfg.MaxSpecialFileSize)
11 logger.Error(errMsg)
12 http.Error(w, errMsg, http.StatusInternalServerError)
13@@ -63,6 +61,7 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
14 buf := new(strings.Builder)
15 lr := io.LimitReader(redirectFp, h.Cfg.MaxSpecialFileSize)
16 _, err := io.Copy(buf, lr)
17+ _ = redirectFp.Close()
18 if err != nil {
19 logger.Error("io copy", "err", err.Error())
20 http.Error(w, "cannot read _redirects file", http.StatusInternalServerError)
21@@ -109,9 +108,7 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
22 if err != nil {
23 continue
24 }
25- defer func() {
26- _ = obj.Close()
27- }()
28+ _ = obj.Close()
29 }
30 logger.Info(
31 "redirecting request",
32@@ -219,10 +216,8 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
33 logger.Info("_headers not found in lru cache", "key", headersCacheKey)
34 headersFp, headersInfo, err := h.Cfg.Storage.GetObject(h.Bucket, filepath.Join(h.ProjectDir, "_headers"))
35 if err == nil {
36- defer func() {
37- _ = headersFp.Close()
38- }()
39 if headersInfo != nil && headersInfo.Size > h.Cfg.MaxSpecialFileSize {
40+ _ = headersFp.Close()
41 errMsg := fmt.Sprintf("_headers file is too large (%d > %d)", headersInfo.Size, h.Cfg.MaxSpecialFileSize)
42 logger.Error(errMsg)
43 http.Error(w, errMsg, http.StatusInternalServerError)
44@@ -231,6 +226,7 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
45 buf := new(strings.Builder)
46 lr := io.LimitReader(headersFp, h.Cfg.MaxSpecialFileSize)
47 _, err := io.Copy(buf, lr)
48+ _ = headersFp.Close()
49 if err != nil {
50 logger.Error("io copy", "err", err.Error())
51 http.Error(w, "cannot read _headers file", http.StatusInternalServerError)