Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[exporter/loadbalancing] Update k8sresolver handler to properly manage update events #36505

Merged

Conversation

dehaansa
Copy link
Contributor

Description

The load balancing exporter's k8sresolver was not handling update events properly. The callback function was being executed after cleanup of old endpoints and also after adding new endpoints. This causes exporter churn in the case of an event in which the lists contain shared elements. See the documentation for examples where the state might change but the IP Addresses would not, including the regular re-list events that might have zero changes.

Link to tracking issue

Fixes #35658
May be related to #35810 as well.

Testing

Added tests for no-change onChange call.

@jpkrohling jpkrohling changed the title [loadbalancingexporter] Update k8sresolver handler to properly manage update events [exporter/loadbalancing] Update k8sresolver handler to properly manage update events Nov 27, 2024
@jpkrohling jpkrohling merged commit af5200a into open-telemetry:main Nov 27, 2024
158 checks passed
@github-actions github-actions bot added this to the next release milestone Nov 27, 2024
@dehaansa dehaansa deleted the bug/single-callback-k8sresolver branch November 27, 2024 14:52
shivanthzen pushed a commit to shivanthzen/opentelemetry-collector-contrib that referenced this pull request Dec 5, 2024
…e update events (open-telemetry#36505)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
The load balancing exporter's k8sresolver was not handling update events
properly. The `callback` function was being executed after cleanup of
old endpoints and also after adding new endpoints. This causes exporter
churn in the case of an event in which the lists contain shared
elements. See the
[documentation](https://pkg.go.dev/k8s.io/client-go/tools/cache#ResourceEventHandler)
for examples where the state might change but the IP Addresses would
not, including the regular re-list events that might have zero changes.

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes
open-telemetry#35658
May be related to
open-telemetry#35810
as well.

<!--Describe what testing was performed and which tests were added.-->
#### Testing
Added tests for no-change onChange call.

<!--Please delete paragraphs that you did not use before submitting.-->
ZenoCC-Peng pushed a commit to ZenoCC-Peng/opentelemetry-collector-contrib that referenced this pull request Dec 6, 2024
…e update events (open-telemetry#36505)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
The load balancing exporter's k8sresolver was not handling update events
properly. The `callback` function was being executed after cleanup of
old endpoints and also after adding new endpoints. This causes exporter
churn in the case of an event in which the lists contain shared
elements. See the
[documentation](https://pkg.go.dev/k8s.io/client-go/tools/cache#ResourceEventHandler)
for examples where the state might change but the IP Addresses would
not, including the regular re-list events that might have zero changes.

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes
open-telemetry#35658
May be related to
open-telemetry#35810
as well.

<!--Describe what testing was performed and which tests were added.-->
#### Testing
Added tests for no-change onChange call.

<!--Please delete paragraphs that you did not use before submitting.-->
sbylica-splunk pushed a commit to sbylica-splunk/opentelemetry-collector-contrib that referenced this pull request Dec 17, 2024
…e update events (open-telemetry#36505)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
The load balancing exporter's k8sresolver was not handling update events
properly. The `callback` function was being executed after cleanup of
old endpoints and also after adding new endpoints. This causes exporter
churn in the case of an event in which the lists contain shared
elements. See the
[documentation](https://pkg.go.dev/k8s.io/client-go/tools/cache#ResourceEventHandler)
for examples where the state might change but the IP Addresses would
not, including the regular re-list events that might have zero changes.

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes
open-telemetry#35658
May be related to
open-telemetry#35810
as well.

<!--Describe what testing was performed and which tests were added.-->
#### Testing
Added tests for no-change onChange call.

<!--Please delete paragraphs that you did not use before submitting.-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Load-balancing exporter k8s resolver continuously invokes the OnUpdate() command in the handler
2 participants