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

[exporter/awsxray] Fix DynamoDB table name translation #19204

Merged
merged 3 commits into from
Apr 10, 2023

Conversation

jj22ee
Copy link
Contributor

@jj22ee jj22ee commented Mar 3, 2023

Description:

DynamoDB nodes in XRay Service Map are without table names. It looks like that the XRay Segment created from the exporter does not contain the dynamodb table name in the aws section. However it should since the addition of the table name is done here.

Turns out the bug is that tableName = value.Str() is incorrect, and will return an empty string as value = attributes[conventions.AttributeAWSDynamoDBTableNames] is not of value type string. The actual type of attributes[conventions.AttributeAWSDynamoDBTableNames] is a Slice (reference). The corresponding unit test also incorrectly assumes that this value is a string and not a slice.

Another issue found was that the exporter doesn't have logic to include table_names in the segment if there are multiple table names.

The fix is to get the first element's string value of the Slice (if it exists) instead if the Slice is of length 1. If the slice has multiple elements, then table_names is set in the segment.

Link to tracking Issue:

Testing:
Fixed unit test should tests this case.

  • attributes[conventions.AttributeAWSDynamoDBTableNames] is set as a slice instead of a string.

Documentation:

@runforesight
Copy link

runforesight bot commented Mar 3, 2023

Foresight Summary

    
Major Impacts

build-and-test-windows duration(5 seconds) has decreased 31 minutes 45 seconds compared to main branch avg(31 minutes 50 seconds).
View More Details

✅  check-links workflow has finished in 49 seconds (41 seconds less than main branch avg.) and finished at 10th Mar, 2023.


Job Failed Steps Tests
changed files -     🔗  N/A See Details
check-links -     🔗  N/A See Details

✅  telemetrygen workflow has finished in 1 minute 8 seconds (59 seconds less than main branch avg.) and finished at 10th Mar, 2023.


Job Failed Steps Tests
build-dev -     🔗  N/A See Details
publish-latest -     🔗  N/A See Details
publish-stable -     🔗  N/A See Details

✅  build-and-test workflow has finished in 34 minutes 25 seconds (31 minutes 2 seconds less than main branch avg.) and finished at 10th Mar, 2023.


Job Failed Steps Tests
unittest-matrix (1.19, connector) -     🔗  ✅ 113  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, connector) -     🔗  ✅ 113  ❌ 0  ⏭ 0    🔗 See Details
correctness-metrics -     🔗  ✅ 2  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, internal) -     🔗  ✅ 581  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, internal) -     🔗  ✅ 581  ❌ 0  ⏭ 0    🔗 See Details
correctness-traces -     🔗  ✅ 17  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, processor) -     🔗  ✅ 1546  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, processor) -     🔗  ✅ 1546  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, extension) -     🔗  ✅ 538  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, extension) -     🔗  ✅ 538  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, receiver-0) -     🔗  ✅ 2580  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, receiver-0) -     🔗  ✅ 2580  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, exporter) -     🔗  ✅ 2476  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, exporter) -     🔗  ✅ 2476  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, receiver-1) -     🔗  ✅ 1940  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, receiver-1) -     🔗  ✅ 1940  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.19, other) -     🔗  ✅ 4728  ❌ 0  ⏭ 0    🔗 See Details
unittest-matrix (1.20, other) -     🔗  ✅ 4728  ❌ 0  ⏭ 0    🔗 See Details
integration-tests -     🔗  ✅ 55  ❌ 0  ⏭ 0    🔗 See Details
setup-environment -     🔗  N/A See Details
check-codeowners -     🔗  N/A See Details
build-examples -     🔗  N/A See Details
checks -     🔗  N/A See Details
check-collector-module-version -     🔗  N/A See Details
lint-matrix (receiver-0) -     🔗  N/A See Details
lint-matrix (receiver-1) -     🔗  N/A See Details
lint-matrix (processor) -     🔗  N/A See Details
lint-matrix (exporter) -     🔗  N/A See Details
lint-matrix (extension) -     🔗  N/A See Details
lint-matrix (connector) -     🔗  N/A See Details
lint-matrix (internal) -     🔗  N/A See Details
lint-matrix (other) -     🔗  N/A See Details
lint -     🔗  N/A See Details
unittest (1.20) -     🔗  N/A See Details
unittest (1.19) -     🔗  N/A See Details
cross-compile (darwin, amd64) -     🔗  N/A See Details
cross-compile (darwin, arm64) -     🔗  N/A See Details
cross-compile (linux, 386) -     🔗  N/A See Details
cross-compile (linux, amd64) -     🔗  N/A See Details
cross-compile (linux, arm) -     🔗  N/A See Details
cross-compile (linux, arm64) -     🔗  N/A See Details
cross-compile (linux, ppc64le) -     🔗  N/A See Details
cross-compile (windows, 386) -     🔗  N/A See Details
cross-compile (windows, amd64) -     🔗  N/A See Details
build-package (deb) -     🔗  N/A See Details
build-package (rpm) -     🔗  N/A See Details
windows-msi -     🔗  N/A See Details
publish-check -     🔗  N/A See Details
publish-stable -     🔗  N/A See Details
publish-dev -     🔗  N/A See Details

✅  prometheus-compliance-tests workflow has finished in 3 minutes 41 seconds (4 minutes 6 seconds less than main branch avg.) and finished at 10th Mar, 2023.


Job Failed Steps Tests
prometheus-compliance-tests -     🔗  ✅ 21  ❌ 0  ⏭ 0    🔗 See Details

✅  load-tests workflow has finished in 7 minutes 13 seconds (6 minutes 28 seconds less than main branch avg.) and finished at 10th Mar, 2023.


Job Failed Steps Tests
loadtest (TestTraceAttributesProcessor) -     🔗  ✅ 3  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestIdleMode) -     🔗  ✅ 1  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestMetric10kDPS|TestMetricsFromFile) -     🔗  ✅ 6  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestTraceNoBackend10kSPS|TestTrace1kSPSWithAttrs) -     🔗  ✅ 8  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestTraceBallast1kSPSWithAttrs|TestTraceBallast1kSPSAddAttrs) -     🔗  ✅ 10  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestMetricResourceProcessor|TestTrace10kSPS) -     🔗  ✅ 12  ❌ 0  ⏭ 0    🔗 See Details
loadtest (TestBallastMemory|TestLog10kDPS) -     🔗  ✅ 18  ❌ 0  ⏭ 0    🔗 See Details
setup-environment -     🔗  N/A See Details

✅  e2e-tests workflow has finished in 11 minutes 28 seconds (3 minutes 43 seconds less than main branch avg.) and finished at 10th Mar, 2023.


Job Failed Steps Tests
kubernetes-test (v1.25.3) -     🔗  N/A See Details
kubernetes-test (v1.26.0) -     🔗  N/A See Details
kubernetes-test (v1.23.13) -     🔗  N/A See Details
kubernetes-test (v1.24.7) -     🔗  N/A See Details

⭕  build-and-test-windows workflow has finished in 5 seconds (31 minutes 45 seconds less than main branch avg.) and finished at 6th Apr, 2023.


Job Failed Steps Tests
windows-unittest-matrix -     🔗  N/A See Details
windows-unittest -     🔗  N/A See Details

✅  changelog workflow has finished in 2 minutes 2 seconds and finished at 6th Apr, 2023.


Job Failed Steps Tests
changelog -     🔗  N/A See Details

🔎 See details on Foresight

*You can configure Foresight comments in your organization settings page.

Copy link
Contributor

@fatsheep9146 fatsheep9146 left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Contributor

@willarmiros willarmiros left a comment

Choose a reason for hiding this comment

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

lgtm!

@jj22ee jj22ee force-pushed the dynamodb-translation-fix branch from 05114fb to 68077de Compare March 9, 2023 22:32
@github-actions github-actions bot requested a review from mxiamxia March 10, 2023 19:28
@jj22ee jj22ee requested review from srprash and willarmiros and removed request for mxiamxia, srprash and willarmiros March 10, 2023 19:40
@jj22ee
Copy link
Contributor Author

jj22ee commented Mar 16, 2023

One thing to note that as of this PR, table_name and table_names can either be captured when the semantic convention attribute conventions.AttributeAWSDynamoDBTableNames is set:

  • table_name is populated when conventions.AttributeAWSDynamoDBTableNames is of size == 1
  • table_names is populated when conventions.AttributeAWSDynamoDBTableNames is of size > 1

However, when only X-Ray custom attributes are set, only table_name can be captured:

  • populating table_name is possible because attribute key aws.table_name is checked
  • attribute key aws.table_names is NOT checked

I suspect that the population of table_names via attribute key aws.table_names is missing functionality because this attribute is NOT checked. I think this enhancement is out of scope of this PR and could be put in another PR.

Copy link
Contributor

@willarmiros willarmiros left a comment

Choose a reason for hiding this comment

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

LGTM, to respond to Jonathan's comment the Semantic conventions are the most important thing to support fully, which we do in this PR. The X-Ray attributes for table names were created as a temporary measure and are superseded by the sem convs, so it's ok if they're not perfectly supported.

@jj22ee jj22ee requested a review from Aneurysm9 March 28, 2023 16:46
@willarmiros
Copy link
Contributor

@Aneurysm9 can we go ahead and merge when you get a chance?

@Aneurysm9 Aneurysm9 added the ready to merge Code review completed; ready to merge by maintainers label Apr 6, 2023
@mx-psi mx-psi merged commit 3dc9d21 into open-telemetry:main Apr 10, 2023
@github-actions github-actions bot added this to the next release milestone Apr 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
exporter/awsxray internal/aws ready to merge Code review completed; ready to merge by maintainers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants