You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Smart Agent Receiver uses the SignalFx exporter to send data points to our backend.
It does so by finding the instance of the exporter registered as part of the configuration of the collector here:
However, we have now changed the way the SignalFx exporter functions, especially as it now obeys the Start/Shutdown lifecycle.
This change is effective in 0.69.0 with this PR: open-telemetry/opentelemetry-collector-contrib#16837
The PR changes the way we initialize the HTTP clients used by the exporter to communicate to our backend so they better adhere to the component lifecycle of the collector, so we may use the bundled config library that helps us configure the clients with confighttp.HTTPClientSettings.
This means that getting the exporter and calling methods on it may panic if the exporter has not started.
The Smart Agent Receiver uses the SignalFx exporter to send data points to our backend.
It does so by finding the instance of the exporter registered as part of the configuration of the collector here:
splunk-otel-collector/pkg/receiver/smartagent/output.go
Line 99 in e7064dc
However, we have now changed the way the SignalFx exporter functions, especially as it now obeys the Start/Shutdown lifecycle.
This change is effective in 0.69.0 with this PR: open-telemetry/opentelemetry-collector-contrib#16837
The PR changes the way we initialize the HTTP clients used by the exporter to communicate to our backend so they better adhere to the component lifecycle of the collector, so we may use the bundled config library that helps us configure the clients with confighttp.HTTPClientSettings.
This means that getting the exporter and calling methods on it may panic if the exporter has not started.
This was reported here:
#2465 (comment)
The stacktrace is reproduced below:
The panic originates specifically on this line:
pushMetadata
here is a field of the struct, which is set during construction of the newMetricsReceiver function (see https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/647ce4f91e0c010d7937ae481cc90eaceb870d65/exporter/signalfxexporter/factory.go#L153):With the change to adopt start/shutdown, the
exp.pushMetadata
is only set duringstart
. So this exporter has a nil field, which panics when we try to export data points: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/647ce4f91e0c010d7937ae481cc90eaceb870d65/exporter/signalfxexporter/exporter.go#L175This regression is present in the upstream collector. It should be relatively easy to create a unit test to reproduce.
The text was updated successfully, but these errors were encountered: