aboutsummaryrefslogtreecommitdiff
path: root/weed/mount
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2025-09-30 20:20:24 -0700
committerGitHub <noreply@github.com>2025-09-30 20:20:24 -0700
commit0b51133fd30ef480a0b61c858848ac392c64f7a5 (patch)
tree7d69026c7022b6f9d1aa1477de5c16dafc706c36 /weed/mount
parentfc89e97af73677b94aed06659361f8719fe9d77e (diff)
downloadseaweedfs-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.go4
-rw-r--r--weed/mount/weedfs_file_read.go5
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
}
}()