diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-09-30 20:20:24 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-30 20:20:24 -0700 |
| commit | 0b51133fd30ef480a0b61c858848ac392c64f7a5 (patch) | |
| tree | 7d69026c7022b6f9d1aa1477de5c16dafc706c36 /weed/mount | |
| parent | fc89e97af73677b94aed06659361f8719fe9d77e (diff) | |
| download | seaweedfs-0b51133fd30ef480a0b61c858848ac392c64f7a5.tar.xz seaweedfs-0b51133fd30ef480a0b61c858848ac392c64f7a5.zip | |
fix leaking goroutines (#7291)
* fix leaking goroutines
* simplify
* simplify
Diffstat (limited to 'weed/mount')
| -rw-r--r-- | weed/mount/weedfs_file_lseek.go | 4 | ||||
| -rw-r--r-- | weed/mount/weedfs_file_read.go | 5 |
2 files changed, 6 insertions, 3 deletions
diff --git a/weed/mount/weedfs_file_lseek.go b/weed/mount/weedfs_file_lseek.go index 73564fdbe..a7e3a2b46 100644 --- a/weed/mount/weedfs_file_lseek.go +++ b/weed/mount/weedfs_file_lseek.go @@ -58,10 +58,14 @@ func (wfs *WFS) Lseek(cancel <-chan struct{}, in *fuse.LseekIn, out *fuse.LseekO // Create a context that will be cancelled when the cancel channel receives a signal ctx, cancelFunc := context.WithCancel(context.Background()) + defer cancelFunc() // Ensure cleanup + go func() { select { case <-cancel: cancelFunc() + case <-ctx.Done(): + // Clean exit when lseek operation completes } }() diff --git a/weed/mount/weedfs_file_read.go b/weed/mount/weedfs_file_read.go index 5a5a5efab..c85478cd0 100644 --- a/weed/mount/weedfs_file_read.go +++ b/weed/mount/weedfs_file_read.go @@ -49,14 +49,13 @@ 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() - + defer cancelFunc() // Ensure cleanup + go func() { select { case <-cancel: cancelFunc() case <-ctx.Done(): - // Context already cancelled, exit goroutine } }() |
