-
Notifications
You must be signed in to change notification settings - Fork 10
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
Initial code and CI for trace data pipeline #368
Conversation
e72e1a4
to
ad57c31
Compare
Are we going to ship different shared libraries for data-pipeline and profiling? |
We are not there yet, and in some languages we definitely will since they don't use the profiler in libdatadog. |
Not a blocker at this point, but more of an observation, note that shipping profiling AND data-pipeline separately for the same language will probably increase the binary size a lot more than if a unified libdatadog was produced ;) |
Yes we are aware of the added binary size and are going to work on reducing this and combining the features into a single binary where it makes sense. |
10654c7
to
824fa21
Compare
It's also going to be hard to load both of them in the same process because of symbols exposed in ddcomon being in both shared library |
Good point! For Ruby we explicitly load the profiling native extension with I'm saying this more out of curiosity / sharing notes :) |
824fa21
to
782ae18
Compare
build-data-pipeline-ffi.sh
Outdated
set -eu | ||
|
||
destdir="$1" | ||
|
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.
do we want to fix the build logics before adding the tracing logics or after ?
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.
Could you please elaborate a bit on what this would mean.
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.
This is relative to the RFC + issue #353
The idea would be to have a single build where we can select what is required to build.
A good first step could be to unify the build scripts.
Ideally all logics would be embedded in cargo in the long term.
cargo build --feature trace-pipeline,profiling,telemetry
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.
Also I don't want to block the PR, if you feel it is already valuable to have a build out there.
We should mainly do this to ensure we can load everything together (and to have a clean build process).
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.
Fixed in the latest commit. As discussed internally profiling library will be the main artifact and data-pipeline symbols will be exported there.
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.
Why do we export the symbols here ?
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.
Forgot the last commit (pushed it but the prompt asked for the credentials while I was AFK) now it's complete.
ee61413
to
e18be6b
Compare
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.
LGTM
can you remove this change please windows/libdatadog.csproj
It will generate a +300MB nuget package. We need to rethink how we package this on windows. CI (dd-trace-dotnet for example, this can be a problem on the runners - not enough disk space)
@@ -18,6 +18,10 @@ pub use crashtracker::*; | |||
#[cfg(feature = "ddtelemetry-ffi")] | |||
pub use ddtelemetry_ffi::*; | |||
|
|||
#[cfg(feature = "data-pipeline-ffi")] | |||
#[allow(unused_imports)] | |||
pub use data_pipeline_ffi::*; |
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.
👍
4a6a251
to
4b42ada
Compare
4b42ada
to
e80bf85
Compare
This is to avoid building a 300MB+ large nuget package.
* Add data-pipeline-ffi symbols in order to treat profiling shared library as the main artifact. * Add feature flag "data-pipeline-ffi" so data-pipeline items are included based on it. * Add flag to handle features in build-profiling-ffi.sh. * Remove data-pipeline-ffi script. * Profiling tests are build with the data-pipeline feature enabled hence trace_exporter source file is built linking against profiling library. Update LICENSE-3rdparty file.
e80bf85
to
d8dccce
Compare
ddog_CharSlice language_version = DDOG_CHARSLICE_C("10.0"); | ||
ddog_CharSlice language_interpreter = DDOG_CHARSLICE_C("X"); | ||
ddog_TraceExporter* trace_exporter = ddog_trace_exporter_new( | ||
host, |
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.
we have an endpoint object that could be useful to share
@@ -97,7 +97,7 @@ jobs: | |||
- name: "Generate profiling FFI" |
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.
Minor: I think we could have a general all feature build.
The profiling workflow currently uses gitlab to release.
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.
The important part is having at least one build per delivered combination.
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.
LGTM
Minor suggestions. Exciting to see this progress 👏
What does this PR do?
The work done on a shared component data pipeline done during the R&D week.
Motivation
Add a base build and CI that we can continue to iterate on to refine the API and functionality of the shared data pipeline component.
Additional Notes
Please don't be to hard on the public APIs, and the implementation. They will evolve over time, but in the interest of not having a ginormous PR from a feature branch, we would like to get the machinery into main.
How to test the change?
Describe here in detail how the change can be validated.
For Reviewers
@DataDog/security-design-and-guidance
.