DataDog / dd-sdk-android

Datadog SDK for Android (Compatible with Kotlin and Java)
Apache License 2.0
140 stars 56 forks source link

RUM-1829 Provide 128 bits support for the trace ids in the Tracing sdk #2089

Closed mariusc83 closed 1 week ago

mariusc83 commented 2 weeks ago

What does this PR do?

In this PR we are adding the 128 bits support for our OpenTelemetry and OpenTracing manual APIs + the distributed traces handled through our DatadogInterceptor. The PR contains 3 parts:

  1. 128 bits support for OpenTracing manual API + tests + integration tests updated
  2. 128 bits support for OpenTelemetry manual API + tests + integration tests updated
  3. 128 bits support for the distributed traces in the DatadogInterceptor

Motivation

What inspired you to submit this pull request?

Additional Notes

Anything else we should know when reviewing?

Review checklist (to be filled by reviewers)

codecov-commenter commented 2 weeks ago

Codecov Report

Attention: Patch coverage is 72.36842% with 42 lines in your changes missing coverage. Please review.

Project coverage is 70.18%. Comparing base (fa1a5f0) to head (446a7b4). Report is 2 commits behind head on develop.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## develop #2089 +/- ## =========================================== + Coverage 69.68% 70.18% +0.49% =========================================== Files 718 721 +3 Lines 26662 26759 +97 Branches 4468 4485 +17 =========================================== + Hits 18579 18779 +200 + Misses 6857 6733 -124 - Partials 1226 1247 +21 ``` | [Files](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | Coverage Δ | | |---|---|---| | [.../android/trace/opentelemetry/OtelTracerProvider.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace-otel%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Ftrace%2Fopentelemetry%2FOtelTracerProvider.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Utb3RlbC9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC90cmFjZS9vcGVudGVsZW1ldHJ5L090ZWxUcmFjZXJQcm92aWRlci5rdA==) | `96.50% <100.00%> (ø)` | | | [.../kotlin/com/datadog/android/trace/AndroidTracer.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Ftrace%2FAndroidTracer.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Uvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvdHJhY2UvQW5kcm9pZFRyYWNlci5rdA==) | `96.00% <100.00%> (ø)` | | | [...al/domain/event/CoreTracerSpanToSpanEventMapper.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Ftrace%2Finternal%2Fdomain%2Fevent%2FCoreTracerSpanToSpanEventMapper.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Uvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvdHJhY2UvaW50ZXJuYWwvZG9tYWluL2V2ZW50L0NvcmVUcmFjZXJTcGFuVG9TcGFuRXZlbnRNYXBwZXIua3Q=) | `88.66% <100.00%> (-0.81%)` | :arrow_down: | | [...e/internal/domain/event/DdSpanToSpanEventMapper.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Ftrace%2Finternal%2Fdomain%2Fevent%2FDdSpanToSpanEventMapper.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Uvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvdHJhY2UvaW50ZXJuYWwvZG9tYWluL2V2ZW50L0RkU3BhblRvU3BhbkV2ZW50TWFwcGVyLmt0) | `91.80% <100.00%> (+4.30%)` | :arrow_up: | | [...n/com/datadog/android/okhttp/DatadogInterceptor.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=integrations%2Fdd-sdk-android-okhttp%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fokhttp%2FDatadogInterceptor.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-aW50ZWdyYXRpb25zL2RkLXNkay1hbmRyb2lkLW9raHR0cC9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9va2h0dHAvRGF0YWRvZ0ludGVyY2VwdG9yLmt0) | `73.47% <100.00%> (ø)` | | | [...datadog/android/okhttp/trace/TracingInterceptor.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=integrations%2Fdd-sdk-android-okhttp%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fokhttp%2Ftrace%2FTracingInterceptor.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-aW50ZWdyYXRpb25zL2RkLXNkay1hbmRyb2lkLW9raHR0cC9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9va2h0dHAvdHJhY2UvVHJhY2luZ0ludGVyY2VwdG9yLmt0) | `81.99% <100.00%> (+0.07%)` | :arrow_up: | | [...rc/main/java/com/datadog/opentracing/DDTracer.java](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace%2Fsrc%2Fmain%2Fjava%2Fcom%2Fdatadog%2Fopentracing%2FDDTracer.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Uvc3JjL21haW4vamF2YS9jb20vZGF0YWRvZy9vcGVudHJhY2luZy9ERFRyYWNlci5qYXZh) | `58.82% <91.67%> (+1.18%)` | :arrow_up: | | [...m/datadog/opentracing/propagation/B3HttpCodec.java](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace%2Fsrc%2Fmain%2Fjava%2Fcom%2Fdatadog%2Fopentracing%2Fpropagation%2FB3HttpCodec.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Uvc3JjL21haW4vamF2YS9jb20vZGF0YWRvZy9vcGVudHJhY2luZy9wcm9wYWdhdGlvbi9CM0h0dHBDb2RlYy5qYXZh) | `5.77% <0.00%> (ø)` | | | [.../datadog/opentracing/propagation/B3MHttpCodec.java](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace%2Fsrc%2Fmain%2Fjava%2Fcom%2Fdatadog%2Fopentracing%2Fpropagation%2FB3MHttpCodec.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Uvc3JjL21haW4vamF2YS9jb20vZGF0YWRvZy9vcGVudHJhY2luZy9wcm9wYWdhdGlvbi9CM01IdHRwQ29kZWMuamF2YQ==) | `0.00% <0.00%> (-6.00%)` | :arrow_down: | | [...dog/opentracing/propagation/HaystackHttpCodec.java](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree&filepath=features%2Fdd-sdk-android-trace%2Fsrc%2Fmain%2Fjava%2Fcom%2Fdatadog%2Fopentracing%2Fpropagation%2FHaystackHttpCodec.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtdHJhY2Uvc3JjL21haW4vamF2YS9jb20vZGF0YWRvZy9vcGVudHJhY2luZy9wcm9wYWdhdGlvbi9IYXlzdGFja0h0dHBDb2RlYy5qYXZh) | `0.00% <0.00%> (ø)` | | | ... and [7 more](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | | ... and [30 files with indirect coverage changes](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2089/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog)
mariusc83 commented 1 week ago

Overall looks good, could you do some manual testing

  • Distributed traces with all context headers are 128 bits
  • Spans are not shown with 128 bit ids in datadog web app
  • Logs correlations are now using 128 bit
  • RUM events now show 128 bit ids

I basically performed all these tests + many other but will double check it now.