mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	Merge pull request #77304 from cwdsuzhou/fix_leak_when_stop_error
Bugfix: fix chan leak when stop error
This commit is contained in:
		@@ -155,14 +155,17 @@ func (w *Watcher) Stop() error {
 | 
			
		||||
	close(w.stopCh)
 | 
			
		||||
 | 
			
		||||
	c := make(chan struct{})
 | 
			
		||||
	var once sync.Once
 | 
			
		||||
	closeFunc := func() { close(c) }
 | 
			
		||||
	go func() {
 | 
			
		||||
		defer close(c)
 | 
			
		||||
		defer once.Do(closeFunc)
 | 
			
		||||
		w.wg.Wait()
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	select {
 | 
			
		||||
	case <-c:
 | 
			
		||||
	case <-time.After(11 * time.Second):
 | 
			
		||||
		once.Do(closeFunc)
 | 
			
		||||
		return fmt.Errorf("timeout on stopping watcher")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user