Checks
Controller Version
0.14.0
Deployment Method
Helm
Checks
To Reproduce
1. Have an arc controller setup on v0.13.0
2. Upgrade it to v0.14.0
3. See that each http requests done by the controller/listener (I assume it's the new scaleset library) are logging [DEBUG] GET https://broker.actions.githubusercontent.com/xxx
Describe the bug
After upgrading the arc runner controller from 0.13.0 to 0.14.0, we started to notice a lot of non-json logs in our observability dashboard.
After a quick investigation, it seems that one part of the code of the controller is not using a logger. We are getting a log for each request done by the controller listener with the following format:
[DEBUG] GET https://broker.actions.githubusercontent.com/scalesets/message (url can change)
I double checked our configuration and we do have
flags:
logLevel: 'info'
logFormat: 'json'
I also checked the secret created on the cluster holding the configuration and it reflects the same values as above (info and json log).
When checking I had one assumption about the new scaleset library:
In common_client.go#L109-L128, the logger passed via WithLogger() is stored in o.logger but never reaches the retryablehttp client:
retryClient = retryablehttp.NewClient() // sets Logger = defaultLogger (not nil)
// ...
if retryClient.Logger == nil { // always false — defaultLogger is not nil
retryClient.Logger = o.logger // never executed
}
retryablehttp.NewClient() pre-populates Logger with a default log.Logger:
func NewClient() *Client {
return &Client{
Logger: defaultLogger, // ← a *log.Logger, never nil
// ...
}
}
Since retryClient.Logger is never nil after NewClient(), the nil check could prevent o.logger from being assigned. The default log.Logger uses Printf("[DEBUG] %s %s", ...) which writes unconditionally to stderr with no level filtering.
Describe the expected behavior
For the controller to pass down the logger and not get stderr logs in plain text if json and info log are configured.
Additional Context
Controller Logs
2026/03/30 18:37:47 [DEBUG] GET https://broker.actions.githubusercontent.com/scalesets/message
Runner Pod Logs
It is not a runner issue.
Checks
Controller Version
0.14.0
Deployment Method
Helm
Checks
To Reproduce
Describe the bug
After upgrading the arc runner controller from 0.13.0 to 0.14.0, we started to notice a lot of non-json logs in our observability dashboard.
After a quick investigation, it seems that one part of the code of the controller is not using a logger. We are getting a log for each request done by the controller listener with the following format:
[DEBUG] GET https://broker.actions.githubusercontent.com/scalesets/message(url can change)I double checked our configuration and we do have
I also checked the secret created on the cluster holding the configuration and it reflects the same values as above (info and json log).
When checking I had one assumption about the new scaleset library:
In common_client.go#L109-L128, the logger passed via WithLogger() is stored in o.logger but never reaches the retryablehttp client:
retryablehttp.NewClient() pre-populates Logger with a default log.Logger:
Since retryClient.Logger is never nil after NewClient(), the nil check could prevent o.logger from being assigned. The default log.Logger uses Printf("[DEBUG] %s %s", ...) which writes unconditionally to stderr with no level filtering.
Describe the expected behavior
For the controller to pass down the logger and not get stderr logs in plain text if json and info log are configured.
Additional Context
Nothing to add hereController Logs
Runner Pod Logs