mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 18:13:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package timeout
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"strconv"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// defaultTimeout is the timeout for most operations that is not overridden.
 | 
						|
	defaultTimeout = 4 * time.Minute
 | 
						|
 | 
						|
	// defaultTimeoutTestdRetry is the retry loop timeout for testd to respond
 | 
						|
	// for a disk to come online in LCOW.
 | 
						|
	defaultTimeoutTestdRetry = 5 * time.Second
 | 
						|
)
 | 
						|
 | 
						|
// External variables for HCSShim consumers to use.
 | 
						|
var (
 | 
						|
	// SystemCreate is the timeout for creating a compute system
 | 
						|
	SystemCreate time.Duration = defaultTimeout
 | 
						|
 | 
						|
	// SystemStart is the timeout for starting a compute system
 | 
						|
	SystemStart time.Duration = defaultTimeout
 | 
						|
 | 
						|
	// SystemPause is the timeout for pausing a compute system
 | 
						|
	SystemPause time.Duration = defaultTimeout
 | 
						|
 | 
						|
	// SystemResume is the timeout for resuming a compute system
 | 
						|
	SystemResume time.Duration = defaultTimeout
 | 
						|
 | 
						|
	// SyscallWatcher is the timeout before warning of a potential stuck platform syscall.
 | 
						|
	SyscallWatcher time.Duration = defaultTimeout
 | 
						|
 | 
						|
	// Tar2VHD is the timeout for the tar2vhd operation to complete
 | 
						|
	Tar2VHD time.Duration = defaultTimeout
 | 
						|
 | 
						|
	// ExternalCommandToStart is the timeout for external commands to start
 | 
						|
	ExternalCommandToStart = defaultTimeout
 | 
						|
 | 
						|
	// ExternalCommandToComplete is the timeout for external commands to complete.
 | 
						|
	// Generally this means copying data from their stdio pipes.
 | 
						|
	ExternalCommandToComplete = defaultTimeout
 | 
						|
 | 
						|
	// TestDRetryLoop is the timeout for testd retry loop when onlining a SCSI disk in LCOW
 | 
						|
	TestDRetryLoop = defaultTimeoutTestdRetry
 | 
						|
)
 | 
						|
 | 
						|
func init() {
 | 
						|
	SystemCreate = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMCREATE", SystemCreate)
 | 
						|
	SystemStart = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMSTART", SystemStart)
 | 
						|
	SystemPause = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMPAUSE", SystemPause)
 | 
						|
	SystemResume = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMRESUME", SystemResume)
 | 
						|
	SyscallWatcher = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSCALLWATCHER", SyscallWatcher)
 | 
						|
	Tar2VHD = durationFromEnvironment("HCSSHIM_TIMEOUT_TAR2VHD", Tar2VHD)
 | 
						|
	ExternalCommandToStart = durationFromEnvironment("HCSSHIM_TIMEOUT_EXTERNALCOMMANDSTART", ExternalCommandToStart)
 | 
						|
	ExternalCommandToComplete = durationFromEnvironment("HCSSHIM_TIMEOUT_EXTERNALCOMMANDCOMPLETE", ExternalCommandToComplete)
 | 
						|
	TestDRetryLoop = durationFromEnvironment("HCSSHIM_TIMEOUT_TESTDRETRYLOOP", TestDRetryLoop)
 | 
						|
}
 | 
						|
 | 
						|
func durationFromEnvironment(env string, defaultValue time.Duration) time.Duration {
 | 
						|
	envTimeout := os.Getenv(env)
 | 
						|
	if len(envTimeout) > 0 {
 | 
						|
		e, err := strconv.Atoi(envTimeout)
 | 
						|
		if err == nil && e > 0 {
 | 
						|
			return time.Second * time.Duration(e)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return defaultValue
 | 
						|
}
 |