Make the disk buffered exporting more efficient#2190
Closed
tylerbenson wants to merge 3 commits intoopen-telemetry:mainfrom
Closed
Make the disk buffered exporting more efficient#2190tylerbenson wants to merge 3 commits intoopen-telemetry:mainfrom
tylerbenson wants to merge 3 commits intoopen-telemetry:mainfrom
Conversation
The previous implementation would load the protobuf encoded bytes from disk, deserialize it, then send it through the delegate exporter pipeline which would likely re-serialize it into the exact same format. This PR reduces the CPU burden by providing an optional alternate path which bypasses the exporter pipeline. Instead it takes the serialized bytes from disk and sends it straight to an HttpExporter or GrpcExporter, which only takes a `Marshaler` class allowing the serialized bytes to be passed straight through. Since these exporters like to know the number of serialized elements that are being passed in, I added a function (with the help of Claude) that counts the serialized elements within the protobuf encoded byte array. A future optimization would be to allow streaming the bytes directly from disk without reading them back into a byte array.
Contributor
|
🔧 The result from spotlessApply was committed to the PR branch. |
LikeTheSalad
suggested changes
Aug 28, 2025
Contributor
LikeTheSalad
left a comment
There was a problem hiding this comment.
Blocking as it's not compatible with the new API. More details here.
Member
Author
|
Closing as discussed in #2183 (comment). |
Member
Author
|
FYI: Looks like some changes are being made in the API that would potentially make this approach more feasible: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Following on from #2138...
The previous implementation would load the protobuf encoded bytes from disk, deserialize it, then send it through the delegate exporter pipeline which would likely re-serialize it into the exact same format.
This PR reduces the CPU burden by providing an optional alternate path which bypasses the exporter pipeline. Instead it takes the serialized bytes from disk and sends it straight to an HttpExporter or GrpcExporter, which only takes a
Marshalerclass allowing the serialized bytes to be passed straight through.Since these exporters like to know the number of serialized elements that are being passed in, I added a function (with the help of Claude) that counts the serialized elements within the protobuf encoded byte array.
A future optimization would be to allow streaming the bytes directly from disk without reading them back into a byte array.