mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Move stack dump dir to exec root
Dump stack dumps to exec root instead of daemon root. When no path is provided to the stack dumper, such is the case with SIGQUIT, dump to stderr. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
		
							parent
							
								
									a27e51ea98
								
							
						
					
					
						commit
						0bd720b28d
					
				
					 2 changed files with 18 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -693,7 +693,11 @@ func NewDaemon(config *Config, registryService registry.Service, containerdRemot
 | 
			
		|||
 | 
			
		||||
	// set up SIGUSR1 handler on Unix-like systems, or a Win32 global event
 | 
			
		||||
	// on Windows to dump Go routine stacks
 | 
			
		||||
	d.setupDumpStackTrap(config.Root)
 | 
			
		||||
	stackDumpDir := config.Root
 | 
			
		||||
	if execRoot := config.GetExecRoot(); execRoot != "" {
 | 
			
		||||
		stackDumpDir = execRoot
 | 
			
		||||
	}
 | 
			
		||||
	d.setupDumpStackTrap(stackDumpDir)
 | 
			
		||||
 | 
			
		||||
	return d, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,15 +83,21 @@ func DumpStacks(dir string) (string, error) {
 | 
			
		|||
		bufferLen *= 2
 | 
			
		||||
	}
 | 
			
		||||
	buf = buf[:stackSize]
 | 
			
		||||
	path := filepath.Join(dir, fmt.Sprintf(stacksLogNameTemplate, strings.Replace(time.Now().Format(time.RFC3339), ":", "", -1)))
 | 
			
		||||
	f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, 0666)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", errors.Wrap(err, "failed to open file to write the goroutine stacks")
 | 
			
		||||
	var f *os.File
 | 
			
		||||
	if dir != "" {
 | 
			
		||||
		path := filepath.Join(dir, fmt.Sprintf(stacksLogNameTemplate, strings.Replace(time.Now().Format(time.RFC3339), ":", "", -1)))
 | 
			
		||||
		var err error
 | 
			
		||||
		f, err = os.OpenFile(path, os.O_CREATE|os.O_WRONLY, 0666)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return "", errors.Wrap(err, "failed to open file to write the goroutine stacks")
 | 
			
		||||
		}
 | 
			
		||||
		defer f.Close()
 | 
			
		||||
		defer f.Sync()
 | 
			
		||||
	} else {
 | 
			
		||||
		f = os.Stderr
 | 
			
		||||
	}
 | 
			
		||||
	defer f.Close()
 | 
			
		||||
	if _, err := f.Write(buf); err != nil {
 | 
			
		||||
		return "", errors.Wrap(err, "failed to write goroutine stacks")
 | 
			
		||||
	}
 | 
			
		||||
	f.Sync()
 | 
			
		||||
	return path, nil
 | 
			
		||||
	return f.Name(), nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue