@@ -31,6 +31,15 @@ const (
3131 // that modules are allowed to startup.
3232 ModuleStartupTimeoutEnvVar = "VIAM_MODULE_STARTUP_TIMEOUT"
3333
34+ // DefaultConfigReadTimeout is the default config read timeout. If there
35+ // is a cached config on the machine, a shorter default timeout will be used.
36+ DefaultConfigReadTimeout = 15 * time .Second
37+
38+ // ConfigReadTimeoutEnvVar is the environment variable that can
39+ // be set to override DefaultConfigReadTimeout as the duration
40+ // for config read.
41+ ConfigReadTimeoutEnvVar = "VIAM_CONFIG_READ_TIMEOUT"
42+
3443 // AndroidFilesDir is hardcoded because golang inits before our android code can override HOME var.
3544 AndroidFilesDir = "/data/user/0/com.viam.rdk.fgservice/cache"
3645
@@ -83,26 +92,34 @@ var windowsPathRegex = regexp.MustCompile(`^(\w:)?(.+)$`)
8392// timeout (env variable value if set, DefaultResourceConfigurationTimeout
8493// otherwise).
8594func GetResourceConfigurationTimeout (logger logging.Logger ) time.Duration {
86- return timeoutHelper (DefaultResourceConfigurationTimeout , ResourceConfigurationTimeoutEnvVar , logger )
95+ timeout , _ := timeoutHelper (DefaultResourceConfigurationTimeout , ResourceConfigurationTimeoutEnvVar , logger )
96+ return timeout
8797}
8898
8999// GetModuleStartupTimeout calculates the module startup timeout
90100// (env variable value if set, DefaultModuleStartupTimeout otherwise).
91101func GetModuleStartupTimeout (logger logging.Logger ) time.Duration {
92- return timeoutHelper (DefaultModuleStartupTimeout , ModuleStartupTimeoutEnvVar , logger )
102+ timeout , _ := timeoutHelper (DefaultModuleStartupTimeout , ModuleStartupTimeoutEnvVar , logger )
103+ return timeout
104+ }
105+
106+ // GetConfigReadTimeout returns the config read timeout set by the env variable value,
107+ // DefaultConfigReadTimeout otherwise.
108+ func GetConfigReadTimeout (logger logging.Logger ) (time.Duration , bool ) {
109+ return timeoutHelper (DefaultConfigReadTimeout , ConfigReadTimeoutEnvVar , logger )
93110}
94111
95- func timeoutHelper (defaultTimeout time.Duration , timeoutEnvVar string , logger logging.Logger ) time.Duration {
112+ func timeoutHelper (defaultTimeout time.Duration , timeoutEnvVar string , logger logging.Logger ) ( time.Duration , bool ) {
96113 if timeoutVal := os .Getenv (timeoutEnvVar ); timeoutVal != "" {
97114 timeout , err := time .ParseDuration (timeoutVal )
98115 if err != nil {
99116 logger .Warnf ("Failed to parse %s env var, falling back to default %v timeout" ,
100117 timeoutEnvVar , defaultTimeout )
101- return defaultTimeout
118+ return defaultTimeout , true
102119 }
103- return timeout
120+ return timeout , false
104121 }
105- return defaultTimeout
122+ return defaultTimeout , true
106123}
107124
108125// PlatformHomeDir wraps Getenv("HOME"), except on android, where it returns the app cache directory.
0 commit comments