-
Notifications
You must be signed in to change notification settings - Fork 168
Disk buffering api implementation #2183
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
Disk buffering api implementation #2183
Conversation
|
🔧 The result from spotlessApply was committed to the PR branch. |
…n' into disk-buffering-api-implementation
|
@LikeTheSalad I see your point about Http/GrpcExporter being internal and agree it is indeed a problematic roadblock for my PR, so I'm going to close it until the SDK has a better option for how to proceed. Even the base class Meanwhile I'm going to unblock myself and copy over what I need of these classes to my internal implementation until the new API has been stabilized enough and I can see a way to reimplement it. |
|
(Disclaimer: I still need to give the code in this PR a proper review!) Since I was mentioned a few times above and I was part of the discussion at the SIG meeting(s), I thought I would open an issue to help track this: #2203. The goal of that issue is to try and capture the common ground approach that I think we all agree is possible with some additional future work. The timing was indeed unfortunate -- we basically had two competing and conflicting and disruptive changes get proposed at the same time. @tylerbenson thanks for being understanding about this timing challenge and flexible enough to close your PR and circle back when the smoke clears. @LikeTheSalad thank you for taking the time to write a thorough response. Same to you @bidetofevil. |
|
Thank you for understanding, @tylerbenson. It would indeed make things easier if the SDK made some of the APIs you mentioned public. In the meantime, while those are still internal, I think we should still be able to enable your use case by tweaking the internal disk buffering API in a further update so that you can reuse and repurpose a lot of it, which I can help with if needed. Thanks for chiming in, @breedx-splk, I like the idea of keeping track of a potential new feature in that issue and taking our time to discuss all the details there. |
|
I think for me, it was unclear what was APIs were meant to be internal and what was meant to be external, especially given the use case Tyler was doing is explicitly about redoing some things that were considered internal, and that there was a desire to support it without needing to fork meant that we had to expose that part. If that was explicitly not wanted, then we probably started off on the wrong foot. But Jason was right in pointing out there are conflicting change. We probably shouldn't have just merged the API changes, then found a way to build an acceptable solution on top that would work for Tyler. I basically encouraged scope creep, and I apologize for that. Lets finish this one and then figure out the other. |
|
@bidetofevil the main issue with my PR is that it uses (and requires users to provide) internal classes from the SDK, not anything specific to this codebase's structure. Until the API/SDK changes, I don't think what I wanted to do is reasonable for a contrib library. (I'm continuing to implement it privately, but that's just because I'm willing to accept breaking changes in the API/SDK.) |
...c/main/java/io/opentelemetry/contrib/disk/buffering/exporters/callback/ExporterCallback.java
Outdated
Show resolved
Hide resolved
...src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordToDiskExporter.java
Outdated
Show resolved
Hide resolved
...ng/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricToDiskExporter.java
Outdated
Show resolved
Hide resolved
...lemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java
Outdated
Show resolved
Hide resolved
# Conflicts: # disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordFromDiskExporter.java # disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordToDiskExporter.java # disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricFromDiskExporter.java # disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricToDiskExporter.java # disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanFromDiskExporter.java # disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanToDiskExporter.java # disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java
…fering/internal/storage/files/reader/DelimitedProtoStreamReader.java Co-authored-by: jason plumb <[email protected]>
…n' into disk-buffering-api-implementation
...rc/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileSignalStorage.java
Outdated
Show resolved
Hide resolved
...ng/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java
Outdated
Show resolved
Hide resolved
# Conflicts: # disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java # disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java # disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java # disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for staying with it.
Cheers! Just checking in — is there anything else needed before we can move forward with these changes, @breedx-splk? |
I don't think so, nah. Let's move this forward. Thanks again. |
Co-authored-by: otelbot <[email protected]> Co-authored-by: jason plumb <[email protected]>
Creation of a default implementation for the new API that was previously defined here.
Note
It looks like there are a lot of changes, but 27 of those "files changes" are deleted files from the old implementation types and their test types. Also, a couple of file changes are just moving around files and/or adding minor changes.
New usage
The same old API behavior is kept for the new API's default implementation.
Writing
Setting up the signal storage objects as well as their
toDiskexporters to be used in an OpenTelemetry instance.Reading
More info in the README.md and DESIGN.md files.