diff options
| author | Jaehoon Kim <kisow80@gmail.com> | 2025-10-01 11:09:39 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-30 19:09:39 -0700 |
| commit | fc89e97af73677b94aed06659361f8719fe9d77e (patch) | |
| tree | adc45035dca22bebb657944b54692d82ff46288f | |
| parent | 8d967c0946609c2da15e60f055c4d1c674330119 (diff) | |
| download | seaweedfs-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.go | 4 |
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 } }() |
