[PROF-6463] Implement support for endpoint profiling in CpuAndWallTime collector #2384
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.
What does this PR do?:
This PR reimplements support for the profiling endpoint feature in the
CpuAndWallTime
collector.Although the implementation is different, the approach is conceptually the same as provided by
Datadog::Profiling::TraceIdentifiers::Ddtrace
for the old profiler codepaths.The constraints of this implementation are the same as the ones in #2342 and effectively this is only a small extension of the work done in that PR.
Motivation:
Endpoint profiling allows customers to filter down their profiles to individual endpoints (for web apps) that they may be interested in investigating.
Additional Notes:
Comparing a Ruby string with a
char *
is really annoying.How to test the change?:
Beyond the code coverage included by the change, it can also be tested by enabling profiling and tracing for a Ruby web app, and then checking that the application's endpoints show up in the right sidebar in the profiling UX.