aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehoon Kim <kisow80@gmail.com>2025-10-01 11:09:39 +0900
committerGitHub <noreply@github.com>2025-09-30 19:09:39 -0700
commitfc89e97af73677b94aed06659361f8719fe9d77e (patch)
treeadc45035dca22bebb657944b54692d82ff46288f
parent8d967c0946609c2da15e60f055c4d1c674330119 (diff)
downloadseaweedfs-fc89e97af73677b94aed06659361f8719fe9d77e.tar.xz
seaweedfs-fc89e97af73677b94aed06659361f8719fe9d77e.zip
FUSE Mount: resolve memory leak in Read method goroutine (#7270) (#7282)
* Add defer cancelFunc() to ensure context is always cancelled * Add ctx.Done() case in goroutine select to prevent goroutine leak * Fixes memory accumulation issue where goroutines were not properly cleaned up
-rw-r--r--weed/mount/weedfs_file_read.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/weed/mount/weedfs_file_read.go b/weed/mount/weedfs_file_read.go
index dc79d3dc7..5a5a5efab 100644
--- a/weed/mount/weedfs_file_read.go
+++ b/weed/mount/weedfs_file_read.go
@@ -49,10 +49,14 @@ func (wfs *WFS) Read(cancel <-chan struct{}, in *fuse.ReadIn, buff []byte) (fuse
// Create a context that will be cancelled when the cancel channel receives a signal
ctx, cancelFunc := context.WithCancel(context.Background())
+ defer cancelFunc()
+
go func() {
select {
case <-cancel:
cancelFunc()
+ case <-ctx.Done():
+ // Context already cancelled, exit goroutine
}
}()