Skip to content
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

Update segment conversion logic #115

Merged
merged 1 commit into from
Oct 12, 2023

Conversation

thpierce
Copy link

Description:
In this commit, we are fixing a couple small bugs missed in the previous review. First, we are adding a nil-guard when settting dependencySubsegment.Name, to avoid the (unlikely, but possible) scenario where local root dependency spans are created without awsRemoteService. Second, we are updating the common logic for setting segment.Name, which previously only looked at CLIENT/PRODUCER spans, but now needs to look at CONSUMER spans.

Link to tracking Issue: N/A, related to comments on #111

Testing: make succeeds

Documentation: N/A

In this commit, we are fixing a couple small bugs missed in the previous review. First, we are adding a nil-guard when settting dependencySubsegment.Name, to avoid the (unlikely, but possible) scenario where local root dependency spans are created without awsRemoteService. Second, we are updating the common logic for setting segment.Name, which previously only looked at CLIENT/PRODUCER spans, but now needs to look at CONSUMER spans.
@thpierce thpierce marked this pull request as draft October 11, 2023 21:17
@thpierce thpierce marked this pull request as ready for review October 11, 2023 21:18
@thpierce
Copy link
Author

11 checks failed, but none related to modified code.

"xray" mentioned with violations, but violations are for untouched test code:

"xray" mentioned, but no violations associated with it:

No reference to "xray"

@lisguo lisguo requested a review from SaxyPandaBear October 12, 2023 16:18
myAwsRemoteService, _ := span.Attributes().Get(awsRemoteService)

dependencySubsegment.Name = awsxray.String(myAwsRemoteService.Str())
if myAwsRemoteService, ok := span.Attributes().Get(awsRemoteService); ok {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mild nit - it would be nice to add a negative test here so that we ensure that if we were to get a span without the AWS remote service set, it doesn't break and leaves the subsegment name as empty, but I don't know how much real value that provides if it's that unlikely.

@lisguo lisguo merged commit ee847de into amazon-contributing:aws-cwa-dev Oct 12, 2023
67 of 78 checks passed
lisguo pushed a commit to lisguo/opentelemetry-collector-contrib that referenced this pull request Oct 20, 2023
In this commit, we are fixing a couple small bugs missed in the previous review. First, we are adding a nil-guard when settting dependencySubsegment.Name, to avoid the (unlikely, but possible) scenario where local root dependency spans are created without awsRemoteService. Second, we are updating the common logic for setting segment.Name, which previously only looked at CLIENT/PRODUCER spans, but now needs to look at CONSUMER spans.
andrzej-stencel pushed a commit to open-telemetry/opentelemetry-collector-contrib that referenced this pull request May 22, 2024
**Description:** <Describe what has changed.>
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
Cherry-picking from downstream:

amazon-contributing#111

amazon-contributing#115

amazon-contributing#127

- We are adjusting the segment creation to accommodate local root spans.
  If a span is a not a local root, then we keep existing behavior.
  If it is a local root then:
    - If it is an Internal or Server span, then promote it to a segment.
Else we will split it into a segment and subsegment. The segment will
represent the service operation and the subsegment will represent the
dependency (service A calls service B).
- Update the common logic for setting segment.Name, which previously
only looked at CLIENT/PRODUCER spans, to also look at CONSUMER spans.

**Link to tracking Issue:** <Issue number if applicable>

**Testing:** <Describe what testing was performed and which tests were
added.>
Unit Testing

**Documentation:** <Describe the documentation added.>

---------

Co-authored-by: atshaw43 <[email protected]>
Co-authored-by: Thomas Pierce <[email protected]>
Co-authored-by: John Knollmeyer <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants