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

Service Naming API #3161

Merged
merged 13 commits into from
May 18, 2023
Merged

Service Naming API #3161

merged 13 commits into from
May 18, 2023

Conversation

jbertran
Copy link
Contributor

What does this PR do?

Reintroduce service naming API.

We came to the conclusion that the benchmark issues were not in fact due to the PR, but rather the benchmark tests for startup and logs are not representative.

This contains #2941, #2961 and 2 subsequent optimization commits.

@jbertran jbertran requested a review from a team as a code owner May 16, 2023 16:41
@github-actions
Copy link

github-actions bot commented May 16, 2023

Overall package size

Self size: 4.15 MB
Deduped: 58.28 MB
No deduping: 58.32 MB

Dependency sizes

name version self size total size
@datadog/pprof 2.2.1 14.24 MB 15.12 MB
@datadog/native-iast-taint-tracking 1.4.1 14.85 MB 14.86 MB
@datadog/native-appsec 3.1.0 13.31 MB 13.32 MB
protobufjs 7.1.2 2.76 MB 6.55 MB
@datadog/native-iast-rewriter 2.0.1 2.09 MB 2.1 MB
@datadog/native-metrics 2.0.0 898.77 kB 1.3 MB
opentracing 0.14.7 194.81 kB 194.81 kB
semver 7.3.8 88.2 kB 118.6 kB
@datadog/sketches-js 2.1.0 109.9 kB 109.9 kB
lodash.sortby 4.7.0 75.76 kB 75.76 kB
lru-cache 7.14.0 74.95 kB 74.95 kB
ipaddr.js 2.0.1 59.52 kB 59.52 kB
ignore 5.2.0 48.87 kB 48.87 kB
import-in-the-middle 1.3.5 34.34 kB 38.81 kB
istanbul-lib-coverage 3.2.0 29.34 kB 29.34 kB
retry 0.10.1 27.44 kB 27.44 kB
lodash.uniq 4.5.0 25.01 kB 25.01 kB
limiter 1.1.5 23.17 kB 23.17 kB
lodash.kebabcase 4.1.1 17.75 kB 17.75 kB
lodash.pick 4.4.0 16.33 kB 16.33 kB
node-abort-controller 3.0.1 14.33 kB 14.33 kB
crypto-randomuuid 1.0.0 11.18 kB 11.18 kB
diagnostics_channel 1.1.0 7.07 kB 7.07 kB
path-to-regexp 0.1.7 6.78 kB 6.78 kB
koalas 1.0.2 6.47 kB 6.47 kB
methods 1.1.2 5.29 kB 5.29 kB
module-details-from-path 1.0.3 4.47 kB 4.47 kB

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@jbertran jbertran changed the title Jbertran/service naming api Service Naming API May 16, 2023
@codecov
Copy link

codecov bot commented May 16, 2023

Codecov Report

Merging #3161 (026023c) into master (3428a1f) will decrease coverage by 0.27%.
The diff coverage is 51.61%.

@@            Coverage Diff             @@
##           master    #3161      +/-   ##
==========================================
- Coverage   86.95%   86.68%   -0.27%     
==========================================
  Files         322      327       +5     
  Lines       11763    11842      +79     
  Branches       33       33              
==========================================
+ Hits        10228    10265      +37     
- Misses       1535     1577      +42     
Impacted Files Coverage Δ
packages/dd-trace/src/service-naming/schemas/v0.js 13.04% <13.04%> (ø)
packages/dd-trace/src/plugins/tracing.js 57.14% <20.00%> (-6.20%) ⬇️
.../dd-trace/src/service-naming/schemas/definition.js 22.22% <22.22%> (ø)
packages/dd-trace/src/service-naming/schemas/v1.js 35.71% <35.71%> (ø)
packages/dd-trace/src/plugins/client.js 50.00% <50.00%> (-16.67%) ⬇️
packages/dd-trace/src/service-naming/index.js 60.00% <60.00%> (ø)
packages/datadog-plugin-amqp10/src/consumer.js 88.88% <100.00%> (ø)
packages/datadog-plugin-amqp10/src/producer.js 90.90% <100.00%> (ø)
packages/datadog-plugin-amqplib/src/client.js 100.00% <100.00%> (ø)
packages/datadog-plugin-amqplib/src/consumer.js 100.00% <100.00%> (ø)
... and 12 more

... and 2 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@jbertran jbertran force-pushed the jbertran/service-naming-api branch from 7a93311 to 80ca3a6 Compare May 16, 2023 16:53
@pr-commenter
Copy link

pr-commenter bot commented May 16, 2023

Benchmarks

Comparing candidate commit 026023c in PR branch jbertran/service-naming-api with baseline commit 3428a1f in branch master.

Found 0 performance improvements and 9 performance regressions! Performance is the same for 438 metrics, 25 unstable metrics.

scenario:log-without-log-16

  • 🟥 cpu_user_time [+7.403ms; +14.399ms] or [+5.090%; +9.901%]
  • 🟥 execution_time [+10.016ms; +11.183ms] or [+5.814%; +6.491%]

scenario:log-with-error-16

  • 🟥 cpu_user_time [+9.689ms; +16.540ms] or [+6.591%; +11.251%]

scenario:log-with-debug-16

  • 🟥 cpu_user_time [+8.796ms; +15.859ms] or [+5.930%; +10.691%]

scenario:startup-with-tracer-16

  • 🟥 cpu_user_time [+10.112ms; +20.869ms] or [+7.486%; +15.449%]
  • 🟥 execution_time [+9.927ms; +10.638ms] or [+6.208%; +6.653%]

scenario:log-with-error-18

  • 🟥 execution_time [+9.674ms; +10.929ms] or [+5.445%; +6.152%]

scenario:log-skip-log-18

  • 🟥 execution_time [+9.662ms; +10.858ms] or [+5.438%; +6.111%]

scenario:startup-with-tracer-18

  • 🟥 execution_time [+10.232ms; +10.731ms] or [+6.160%; +6.461%]

@jbertran
Copy link
Contributor Author

In some benches the numbers are higher than what we got in #3099 - not sure if it's good enough, but it's still just logs and startup.

jbertran and others added 13 commits May 18, 2023 12:44
* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name
* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type
@tlhunter tlhunter force-pushed the jbertran/service-naming-api branch from 80ca3a6 to 026023c Compare May 18, 2023 19:44
@tlhunter tlhunter merged commit caa26cf into master May 18, 2023
104 checks passed
thedavl pushed a commit that referenced this pull request May 30, 2023
* introduce DD_TRACE_SPAN_ATTRIBUTE_SCHEMA env var

* add attribute schema v0 for rhea

* add attribute schema v1 for rhea

* add test harness for service/operation naming

* grab config object from pluginManager init

* provide schema autoresolution in consumer/producer plugins

* bind service to schema manager at configure time

* rename plugins to match inbound/outbound service naming terminology

* minimize test dependencies

* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name

* split test naming schema from test code

* Apply service naming flow to messaging integrations (#2961)

* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type

* no logs on empty DD_SPAN_TRACE_ATTRIBUTE_SCHEMA

* don't compute service name unless necessary
uurien pushed a commit that referenced this pull request Jun 1, 2023
* introduce DD_TRACE_SPAN_ATTRIBUTE_SCHEMA env var

* add attribute schema v0 for rhea

* add attribute schema v1 for rhea

* add test harness for service/operation naming

* grab config object from pluginManager init

* provide schema autoresolution in consumer/producer plugins

* bind service to schema manager at configure time

* rename plugins to match inbound/outbound service naming terminology

* minimize test dependencies

* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name

* split test naming schema from test code

* Apply service naming flow to messaging integrations (#2961)

* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type

* no logs on empty DD_SPAN_TRACE_ATTRIBUTE_SCHEMA

* don't compute service name unless necessary
uurien pushed a commit that referenced this pull request Jun 1, 2023
* introduce DD_TRACE_SPAN_ATTRIBUTE_SCHEMA env var

* add attribute schema v0 for rhea

* add attribute schema v1 for rhea

* add test harness for service/operation naming

* grab config object from pluginManager init

* provide schema autoresolution in consumer/producer plugins

* bind service to schema manager at configure time

* rename plugins to match inbound/outbound service naming terminology

* minimize test dependencies

* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name

* split test naming schema from test code

* Apply service naming flow to messaging integrations (#2961)

* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type

* no logs on empty DD_SPAN_TRACE_ATTRIBUTE_SCHEMA

* don't compute service name unless necessary
uurien pushed a commit that referenced this pull request Jun 1, 2023
* introduce DD_TRACE_SPAN_ATTRIBUTE_SCHEMA env var

* add attribute schema v0 for rhea

* add attribute schema v1 for rhea

* add test harness for service/operation naming

* grab config object from pluginManager init

* provide schema autoresolution in consumer/producer plugins

* bind service to schema manager at configure time

* rename plugins to match inbound/outbound service naming terminology

* minimize test dependencies

* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name

* split test naming schema from test code

* Apply service naming flow to messaging integrations (#2961)

* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type

* no logs on empty DD_SPAN_TRACE_ATTRIBUTE_SCHEMA

* don't compute service name unless necessary
This was referenced Jun 1, 2023
@uurien uurien mentioned this pull request Jun 1, 2023
uurien pushed a commit that referenced this pull request Jun 2, 2023
* introduce DD_TRACE_SPAN_ATTRIBUTE_SCHEMA env var

* add attribute schema v0 for rhea

* add attribute schema v1 for rhea

* add test harness for service/operation naming

* grab config object from pluginManager init

* provide schema autoresolution in consumer/producer plugins

* bind service to schema manager at configure time

* rename plugins to match inbound/outbound service naming terminology

* minimize test dependencies

* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name

* split test naming schema from test code

* Apply service naming flow to messaging integrations (#2961)

* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type

* no logs on empty DD_SPAN_TRACE_ATTRIBUTE_SCHEMA

* don't compute service name unless necessary
uurien pushed a commit that referenced this pull request Jun 2, 2023
* introduce DD_TRACE_SPAN_ATTRIBUTE_SCHEMA env var

* add attribute schema v0 for rhea

* add attribute schema v1 for rhea

* add test harness for service/operation naming

* grab config object from pluginManager init

* provide schema autoresolution in consumer/producer plugins

* bind service to schema manager at configure time

* rename plugins to match inbound/outbound service naming terminology

* minimize test dependencies

* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name

* split test naming schema from test code

* Apply service naming flow to messaging integrations (#2961)

* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type

* no logs on empty DD_SPAN_TRACE_ATTRIBUTE_SCHEMA

* don't compute service name unless necessary
uurien pushed a commit that referenced this pull request Jun 2, 2023
* introduce DD_TRACE_SPAN_ATTRIBUTE_SCHEMA env var

* add attribute schema v0 for rhea

* add attribute schema v1 for rhea

* add test harness for service/operation naming

* grab config object from pluginManager init

* provide schema autoresolution in consumer/producer plugins

* bind service to schema manager at configure time

* rename plugins to match inbound/outbound service naming terminology

* minimize test dependencies

* naming resolution wrt version in the test object uses
  the Nomenclature, instead of being resolved by the test fixture
* we no longer use the test fixture for _all_ existing tests, rather
  let the default resolution do the work
* the testing fixture accepts a callback which is a minimal viable
  trace retrieval, on which we examine _only_ service and name

* split test naming schema from test code

* Apply service naming flow to messaging integrations (#2961)

* add v0 to all messaging plugins
* add v1 to all messaging plugins
* test naming schema for all messaging integrations
* add naming schema tests for other versions
* bake messaging data into producer/consumer plugins
* persist kind in plugins and infer naming subtype from kind+type

* no logs on empty DD_SPAN_TRACE_ATTRIBUTE_SCHEMA

* don't compute service name unless necessary
@tlhunter tlhunter deleted the jbertran/service-naming-api branch January 19, 2024 22:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants