Gangams/fix cosmic large scale issue #1533
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces several enhancements and fixes to the Kubernetes API client and related utilities, primarily focusing on improving the robustness and efficiency of resource fetching and parsing from the Kubernetes API. The changes include switching to a streaming JSON parser for large responses, handling gzip-compressed payloads, and adding more resilient error handling and telemetry. Additionally, there are minor improvements to custom metrics availability checks and conditional record processing.
Kubernetes API Client improvements
KubernetesApiClient#getResourcesAndContinuationTokenV2to use streaming JSON parsing viaYajl::Parser, with support for gzip-compressed responses for improved performance and lower memory usage on large payloads. Fallback to legacy parsing is retained for error cases.zlib,stringio, andyajl) toKubernetesApiClient.rbto enable streaming and compressed JSON parsing.Error handling and telemetry
Custom metrics and pod inventory
enable_custom_metricsconfiguration, making the check more robust.in_kube_podinventory.rbto only push pod records for custom metrics when custom metrics are available, preventing unnecessary processing.