
This tag of hcsshim brings in a couple welcome features/improvements. One being exposing a way to query for hns endpoint statistics (Packets received/sent etc.). This tag also contains some optimizations for querying whether a certain HCN feature is supported, which is a common workflow in kube-proxy on Windows. The first result from querying HCN is now cached so further calls can skip the hcn query as well as the version range parsing that was performed. This also gets rid of some redundant logs that used to hit everytime the version range parsing occurred. The Go-winio dep bump, and all of the ctrd deps are transitive only. Nothing new is needed/intended to be used. Signed-off-by: Daniel Canter <dcanter@microsoft.com>
75 lines
2.7 KiB
Go
75 lines
2.7 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
|
|
|
|
// SystemSave is the timeout for saving a compute system
|
|
SystemSave 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)
|
|
SystemSave = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMSAVE", SystemSave)
|
|
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
|
|
}
|