From c6ed355c4b1d11ee1208628ef21adf9541c3ef9d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Mar 2026 05:46:12 +0000 Subject: [PATCH 1/2] Initial plan From 532fe05832267e6c62cd393e2f4386ec80d1eaad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Mar 2026 05:50:50 +0000 Subject: [PATCH 2/2] fix: close file descriptors in getContents error paths to prevent fd leaks Co-authored-by: sendya <5404542+sendya@users.noreply.github.com> --- server/middleware/caching/internal.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/middleware/caching/internal.go b/server/middleware/caching/internal.go index 3364256..19325cf 100644 --- a/server/middleware/caching/internal.go +++ b/server/middleware/caching/internal.go @@ -174,6 +174,7 @@ func getContents(c *Caching, reqChunks []uint32, from uint32) (io.ReadCloser, in if err := checkChunkSize(c, f, idx); err == nil { return f, 1, nil } + _ = f.Close() } // find all hit block. @@ -192,6 +193,7 @@ func getContents(c *Caching, reqChunks []uint32, from uint32) (io.ReadCloser, in chunkFile, _ := getSliceChunkFile(c, availableChunks[index]) if chunkFile != nil { if err := checkChunkSize(c, chunkFile, idx); err != nil { + _ = chunkFile.Close() _ = c.bucket.Discard(context.Background(), c.id) return nil, 0, err } @@ -202,6 +204,7 @@ func getContents(c *Caching, reqChunks []uint32, from uint32) (io.ReadCloser, in // Request is automatically cloned by getUpstreamReader reader, err := c.getUpstreamReader(fromByte, toByte, true) if err != nil { + _ = chunkFile.Close() return nil, 0, err }