3131 // to where relay data to
3232 remoteAddress = getEnvStrOr ("PYROSCOPE_REMOTE_ADDRESS" , "https://ingest.pyroscope.cloud" )
3333
34- authToken = getEnvStrOr ("PYROSCOPE_AUTH_TOKEN" , "" )
35- timeout = getEnvDurationOr ("PYROSCOPE_TIMEOUT" , time .Second * 10 )
34+ authToken = getEnvStrOr ("PYROSCOPE_AUTH_TOKEN" , "" )
35+ timeout = getEnvDurationOr ("PYROSCOPE_TIMEOUT" , time .Second * 10 )
36+ numWorkers = getEnvIntOr ("PYROSCOPE_NUM_WORKERS" , 5 )
3637
3738 // profile the extension?
3839 selfProfiling = getEnvBool ("PYROSCOPE_SELF_PROFILING" )
@@ -45,7 +46,7 @@ func main() {
4546 // Init components
4647 remoteClient := relay .NewRemoteClient (logger , & relay.RemoteClientCfg {Address : remoteAddress , AuthToken : authToken , Timeout : timeout })
4748 // TODO(eh-am): a find a better default for num of workers
48- queue := relay .NewRemoteQueue (logger , & relay.RemoteQueueCfg {NumWorkers : 4 }, remoteClient )
49+ queue := relay .NewRemoteQueue (logger , & relay.RemoteQueueCfg {NumWorkers : numWorkers }, remoteClient )
4950 ctrl := relay .NewController (logger , queue )
5051 server := relay .NewServer (logger , & relay.ServerCfg {ServerAddress : "0.0.0.0:4040" }, ctrl .RelayRequest )
5152
@@ -161,6 +162,7 @@ func getEnvStrOr(key string, fallback string) string {
161162
162163 return fallback
163164}
165+
164166func getEnvBool (key string ) bool {
165167 k := os .Getenv (key )
166168 v , err := strconv .ParseBool (k )
@@ -178,6 +180,7 @@ func getEnvDurationOr(key string, fallback time.Duration) time.Duration {
178180 if ok && k != "" {
179181 dur , err := time .ParseDuration (k )
180182 if err != nil {
183+ logrus .Warnf ("invalid value for env var '%s': '%s' defaulting to '%s'" , key , k , fallback )
181184 return fallback
182185 }
183186
@@ -186,3 +189,19 @@ func getEnvDurationOr(key string, fallback time.Duration) time.Duration {
186189
187190 return fallback
188191}
192+
193+ func getEnvIntOr (key string , fallback int ) int {
194+ k , ok := os .LookupEnv (key )
195+
196+ // has an explicit value
197+ if ok && k != "" {
198+ val , err := strconv .Atoi (k )
199+ if err != nil {
200+ logrus .Warnf ("invalid value for env var '%s': '%s' defaulting to '%d'" , key , k , fallback )
201+ return fallback
202+ }
203+ return val
204+ }
205+
206+ return fallback
207+ }
0 commit comments