- Notifications
You must be signed in to change notification settings - Fork 320
Use env-entry to add tags per webapp deployment #8138
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
Conversation
BenchmarksStartupLoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 13 metrics, 15 unstable metrics. Request duration reports for petclinicgantt title petclinic - request duration [CI 0.99] : candidate=1.46.0-SNAPSHOT~8760af662e, baseline=1.46.0-SNAPSHOT~22458b3367 dateFormat X axisFormat %s section baseline no_agent (1.352 ms) : 1333, 1371 . : milestone, 1352, appsec (1.75 ms) : 1726, 1773 . : milestone, 1750, appsec_no_iast (1.756 ms) : 1732, 1781 . : milestone, 1756, iast (1.493 ms) : 1471, 1516 . : milestone, 1493, profiling (1.55 ms) : 1524, 1576 . : milestone, 1550, tracing (1.495 ms) : 1471, 1519 . : milestone, 1495, section candidate no_agent (1.353 ms) : 1332, 1373 . : milestone, 1353, appsec (1.753 ms) : 1729, 1776 . : milestone, 1753, appsec_no_iast (1.762 ms) : 1738, 1786 . : milestone, 1762, iast (1.513 ms) : 1491, 1535 . : milestone, 1513, profiling (1.517 ms) : 1491, 1542 . : milestone, 1517, tracing (1.483 ms) : 1458, 1508 . : milestone, 1483,
Request duration reports for insecure-bankgantt title insecure-bank - request duration [CI 0.99] : candidate=1.46.0-SNAPSHOT~8760af662e, baseline=1.46.0-SNAPSHOT~22458b3367 dateFormat X axisFormat %s section baseline no_agent (375.877 µs) : 356, 396 . : milestone, 376, iast (497.975 µs) : 476, 520 . : milestone, 498, iast_FULL (654.463 µs) : 633, 676 . : milestone, 654, iast_GLOBAL (523.144 µs) : 501, 545 . : milestone, 523, iast_HARDCODED_SECRET_DISABLED (509.807 µs) : 488, 531 . : milestone, 510, iast_INACTIVE (451.95 µs) : 431, 473 . : milestone, 452, iast_TELEMETRY_OFF (485.844 µs) : 464, 508 . : milestone, 486, tracing (452.364 µs) : 432, 473 . : milestone, 452, section candidate no_agent (387.029 µs) : 367, 407 . : milestone, 387, iast (495.705 µs) : 474, 517 . : milestone, 496, iast_FULL (656.797 µs) : 635, 678 . : milestone, 657, iast_GLOBAL (528.483 µs) : 506, 551 . : milestone, 528, iast_HARDCODED_SECRET_DISABLED (496.953 µs) : 475, 519 . : milestone, 497, iast_INACTIVE (452.06 µs) : 431, 473 . : milestone, 452, iast_TELEMETRY_OFF (486.401 µs) : 465, 508 . : milestone, 486, tracing (450.263 µs) : 429, 471 . : milestone, 450,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 0 unstable metrics. Execution time for tomcatgantt title tomcat - execution time [CI 0.99] : candidate=1.46.0-SNAPSHOT~8760af662e, baseline=1.46.0-SNAPSHOT~22458b3367 dateFormat X axisFormat %s section baseline no_agent (1.467 ms) : 1456, 1479 . : milestone, 1467, appsec (2.35 ms) : 2307, 2392 . : milestone, 2350, iast (2.097 ms) : 2043, 2151 . : milestone, 2097, iast_GLOBAL (2.141 ms) : 2087, 2195 . : milestone, 2141, profiling (1.948 ms) : 1906, 1991 . : milestone, 1948, tracing (1.936 ms) : 1894, 1977 . : milestone, 1936, section candidate no_agent (1.472 ms) : 1460, 1483 . : milestone, 1472, appsec (2.348 ms) : 2306, 2391 . : milestone, 2348, iast (2.11 ms) : 2056, 2164 . : milestone, 2110, iast_GLOBAL (2.139 ms) : 2085, 2194 . : milestone, 2139, profiling (1.973 ms) : 1930, 2017 . : milestone, 1973, tracing (1.944 ms) : 1902, 1986 . : milestone, 1944,
Execution time for biojavagantt title biojava - execution time [CI 0.99] : candidate=1.46.0-SNAPSHOT~8760af662e, baseline=1.46.0-SNAPSHOT~22458b3367 dateFormat X axisFormat %s section baseline no_agent (15.366 s) : 15366000, 15366000 . : milestone, 15366000, appsec (15.161 s) : 15161000, 15161000 . : milestone, 15161000, iast (18.675 s) : 18675000, 18675000 . : milestone, 18675000, iast_GLOBAL (18.201 s) : 18201000, 18201000 . : milestone, 18201000, profiling (14.906 s) : 14906000, 14906000 . : milestone, 14906000, tracing (14.977 s) : 14977000, 14977000 . : milestone, 14977000, section candidate no_agent (15.457 s) : 15457000, 15457000 . : milestone, 15457000, appsec (14.877 s) : 14877000, 14877000 . : milestone, 14877000, iast (19.106 s) : 19106000, 19106000 . : milestone, 19106000, iast_GLOBAL (18.009 s) : 18009000, 18009000 . : milestone, 18009000, profiling (15.064 s) : 15064000, 15064000 . : milestone, 15064000, tracing (15.002 s) : 15002000, 15002000 . : milestone, 15002000,
|
d3e1f2d to 62f2214 Compare
PerfectSlayer left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Few minor comments
internal-api/src/main/java/datadog/trace/api/ClassloaderConfigurationOverrides.java Outdated Show resolved Hide resolved
dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java Outdated Show resolved Hide resolved
dd-java-agent/instrumentation/wildfly-9/src/test/java/test/ModulePatchInstrumentation.java Show resolved Hide resolved
764661d to 8fce1cb Compare
PerfectSlayer left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good from platform 👍 You might want to have some eyes from IDM too 😉
dd-java-agent/instrumentation/wildfly-9/src/test/java/test/ModulePatchInstrumentation.java Show resolved Hide resolved
| | ||
| public static class ContextualInfo { | ||
| private final String serviceName; | ||
| private final Map<String, Object> tags = new HashMap<>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can tags be added concurrently by different threads, or added by one thread while queried by another?
If so then we'll either need a concurrent collection here, or add synchronization to methods accessing tags.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not happening since there is 1 deployment per 1 classloader so it cannot happen. For this reason I preferred to use a regular map
internal-api/src/main/java/datadog/trace/api/ClassloaderConfigurationOverrides.java Outdated Show resolved Hide resolved
internal-api/src/main/java/datadog/trace/api/ClassloaderConfigurationOverrides.java Outdated Show resolved Hide resolved
internal-api/src/main/java/datadog/trace/api/ClassloaderConfigurationOverrides.java Outdated Show resolved Hide resolved
| return; | ||
| } | ||
| if (CAN_SPLIT_SERVICE_NAME_BY_DEPLOYMENT | ||
| && contextualInfo.serviceName != null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
small inconsistency: here we're accessing the field, while the line below we're using the getter
also we access it several times in the same method, so consider pulling it into a local variable
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I extracted a local var. It should be better now
...in/java/datadog/trace/instrumentation/wildfly/ResourceReferenceProcessorInstrumentation.java Outdated Show resolved Hide resolved
| serviceName = traceConfig.getPreferredServiceName(); | ||
| } | ||
| ClassloaderConfigurationOverrides.ContextualInfo contextualInfo = | ||
| ClassloaderConfigurationOverrides.maybeGetContextualInfo(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Previously we only called ClassloaderServiceNames when the span or its parent didn't have a service name.
We're now calling maybeGetContextualInfo unconditionally for every span which involves:
- a call to
Thread.currentThread().getContextClassLoader() - a call to
WeakHashMap.get
Do we know how much overhead this could add to span creation? (a microbenchmark would be very helpful)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a benchmark. Even if it can be quite little overhead, as discussed, I put a boolean flag to act as a no-op when the map is empty saving the extra computation in the general non jee case
| private static final Function<ClassLoader, ContextualInfo> EMPTY_CONTEXTUAL_INFO_ADDER = | ||
| ignored -> new ContextualInfo(null); | ||
| | ||
| private final WeakHashMap<ClassLoader, ContextualInfo> weakCache = new WeakHashMap<>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WeakHashMap is not a concurrent collection - to be safe we should really wrap this in synchronizedMap, but that would have performance implications given we're now accessing the map for every span.
There is WeakConcurrentMap but we cannot use that directly in internal-api because it would leak that implementation onto the application class-path. You might therefore need to move this cache to inside dd-trace-core or somewhere similarly isolated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mcculls thanks. I protected the write path with a lock. The read path is not needing to be thread safe. There could be parallel deployment needing to write the map. However the read are usually happening afterwards.
I also added a quick optimization using a volatile flag in order to skip any costly operation when the map is just empty
mcculls left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just one concern - we're now accessing the weak cache for every span regardless whether this feature is enabled or not. The current implementation used for the weak cache is not thread-safe and should really be wrapped in synchronizedMap.
Given this I'd like to see some microbenchmarking done to check how much overhead this will add. (We also need to resolve whether synchronizedMap is OK or should we consider using WeakConcurrentMap indirectly - benchmarking will also help with that)
6c4e4d7 to 9423b4c Compare 904bee2 to 762133c Compare
ygree left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…urationOverrides.java Co-authored-by: Bruce Bujon <PerfectSlayer@users.noreply.github.com>
…urationOverrides.java Co-authored-by: Stuart McCulloch <stuart.mcculloch@datadoghq.com>
…urationOverrides.java Co-authored-by: Stuart McCulloch <stuart.mcculloch@datadoghq.com>
762133c to e8e8281 Compare * Use env-entry to add tags per webapp deployment * fix gradle file * Migrate to hasmethodadvice * exclude classes from coverage * codenarc * add more repos * jacoco * Update internal-api/src/main/java/datadog/trace/api/ClassloaderConfigurationOverrides.java Co-authored-by: Bruce Bujon <PerfectSlayer@users.noreply.github.com> * review * use our named * more coverage * Update internal-api/src/main/java/datadog/trace/api/ClassloaderConfigurationOverrides.java Co-authored-by: Stuart McCulloch <stuart.mcculloch@datadoghq.com> * Update internal-api/src/main/java/datadog/trace/api/ClassloaderConfigurationOverrides.java Co-authored-by: Stuart McCulloch <stuart.mcculloch@datadoghq.com> * review * add jmh * optimize * widen muzzle excludes * exclude lazy from branch coverage * clean * Do not set contextual service name if jee-split-by-deployment is not enabled --------- Co-authored-by: Bruce Bujon <PerfectSlayer@users.noreply.github.com> Co-authored-by: Stuart McCulloch <stuart.mcculloch@datadoghq.com>
| Package | Type | Package file | Manager | Update | Change | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-datastore](https://github.com/googleapis/java-datastore) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `2.25.4` -> `2.26.0` | | [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `1.45.2` -> `1.46.0` | | [com.datadoghq:dd-trace-ot](https://github.com/datadog/dd-trace-java) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `1.45.2` -> `1.46.0` | | [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.9` -> `2.30.10` | | [software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.9` -> `2.30.10` | | [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.9` -> `2.30.10` | | [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.9` -> `2.30.10` | | [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.9` -> `2.30.10` | | [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.9` -> `2.30.10` | --- ### Release Notes <details> <summary>googleapis/java-datastore (com.google.cloud:google-cloud-datastore)</summary> ### [`v2.26.0`](https://github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2260-2025-01-29) ##### Features - Add firestoreInDatastoreMode for datastore emulator ([#​1698](googleapis/java-datastore#1698)) ([50f106d](googleapis/java-datastore@50f106d)) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.42.0 ([#​1725](googleapis/java-datastore#1725)) ([1cbaf22](googleapis/java-datastore@1cbaf22)) </details> <details> <summary>datadog/dd-trace-java (com.datadoghq:dd-trace-api)</summary> ### [`v1.46.0`](https://github.com/DataDog/dd-trace-java/releases/tag/v1.46.0): 1.46.0 ##### Breaking Changes > \[!WARNING] > jnr-unixsocket is now an external dependency of dd-trace-ot and must be included when deploying dd-trace-ot. > \[!NOTE] > The API `TracerScope.setAsync(boolean)`, used to manually control asynchronous span propagation, does no more apply to the scope instance but to the active span scope. ##### Components ##### Application Security Management (IAST) - 🐛 Fix String.replace instrumentation for IAST ([#​8281](DataDog/dd-trace-java#8281) - [@​Mariovido](https://github.com/Mariovido)) - ✨ Apply the standard nomenclature to the stacktrace configs ([#​8244](DataDog/dd-trace-java#8244) - [@​jandro996](https://github.com/jandro996)) - 🐛 Exclude false positive weak randomness ([#​8232](DataDog/dd-trace-java#8232) - [@​jandro996](https://github.com/jandro996)) - ✨ Propagation of translateEscapes of String class ([#​8186](DataDog/dd-trace-java#8186) - [@​sezen-datadog](https://github.com/sezen-datadog)) - ✨ Add security control metrics ([#​8175](DataDog/dd-trace-java#8175) - [@​jandro996](https://github.com/jandro996)) - ✨ Increase IAST propagation to StringBuffer setLength ([#​8128](DataDog/dd-trace-java#8128) - [@​Mariovido](https://github.com/Mariovido)) - ✨ Add IAST taint tracking for DB values ([#​8072](DataDog/dd-trace-java#8072) - [@​Mariovido](https://github.com/Mariovido)) ##### Application Security Management (WAF) - 🐛 Prevents a NPE when there is no subscriber for user events ([#​8258](DataDog/dd-trace-java#8258) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Apply the standard nomenclature to the stacktrace configs ([#​8244](DataDog/dd-trace-java#8244) - [@​jandro996](https://github.com/jandro996)) - 🐛 Ensure cached subscriptions are cleared on reconfiguration via RC ([#​8229](DataDog/dd-trace-java#8229) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Add support for session tracking in Vertx ([#​8167](DataDog/dd-trace-java#8167) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Create span tag: \_dd.appsec.rasp.timeout ([#​8269](DataDog/dd-trace-java#8269) - [@​Mariovido](https://github.com/Mariovido)) ##### Build & Tooling - 🐛 Ensure shaded helpers have unique names when injected into class-loaders ([#​8192](DataDog/dd-trace-java#8192) - [@​mcculls](https://github.com/mcculls)) ##### Configuration at Runtime - 🐛 Remove filtering of `DD_SERVICE` and `DD_ENV` from the tracer ([#​8176](DataDog/dd-trace-java#8176) - [@​mhlidd](https://github.com/mhlidd)) ##### Continuous Integration Visibility - 🧹 Generalize TestRetryPolicy to TestExecutionPolicy ([#​8302](DataDog/dd-trace-java#8302) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🧹 Parallelize CI Visibility settings requests ([#​8299](DataDog/dd-trace-java#8299) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🧹 Generalize test retry logic ([#​8289](DataDog/dd-trace-java#8289) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🧹 Generalize tests skipping logic ([#​8288](DataDog/dd-trace-java#8288) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🧹 Remove skip and shouldBeSkipped methods from TestEventsHandler in favor of isSkippable ([#​8286](DataDog/dd-trace-java#8286) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨⚡ Optimize Git repository information computation ([#​8270](DataDog/dd-trace-java#8270) - [@​dougqh](https://github.com/dougqh)) - ✨ Always request known tests from the backend ([#​8268](DataDog/dd-trace-java#8268) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Fix NPE when trying to get retry analyzer in Test NG ([#​8253](DataDog/dd-trace-java#8253) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Set test framework and test framework version tags atomically ([#​8252](DataDog/dd-trace-java#8252) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Add debug logging to Android Gradle module layout logic ([#​8251](DataDog/dd-trace-java#8251) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Fix source and destination folders computation for Android Gradle projects ([#​8190](DataDog/dd-trace-java#8190) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Add basic Scala Weaver sbt support ([#​8189](DataDog/dd-trace-java#8189) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Implement impacted tests detection ([#​8188](DataDog/dd-trace-java#8188) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) ##### Data Streams Monitoring - ✨ Change hash computation for protobuf to better represent impacting changes + save proto number in schema ([#​8201](DataDog/dd-trace-java#8201) - [@​vandonr](https://github.com/vandonr)) ##### Database Monitoring - Add peer service tag in dbm sql commenter ([#​7913](DataDog/dd-trace-java#7913) - [@​jordan-wong](https://github.com/jordan-wong)) ##### Dynamic Instrumentation - ✨ Add support for SymDB to scan directories ([#​8306](DataDog/dd-trace-java#8306) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Add SymDB report for any jar scanning failures ([#​8300](DataDog/dd-trace-java#8300) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Use two budgets depending on type ([#​8283](DataDog/dd-trace-java#8283) - [@​evanchooly](https://github.com/evanchooly)) - ✨ Institute a 10 snapshot per probe per trace budget ([#​8277](DataDog/dd-trace-java#8277) - [@​evanchooly](https://github.com/evanchooly)) - 🐛 Avoid double snapshots for Exception Replay ([#​8273](DataDog/dd-trace-java#8273) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Simplify code origins. Separate out snapshot generation. ([#​8263](DataDog/dd-trace-java#8263) - [@​evanchooly](https://github.com/evanchooly)) - ✨ Add Exception probe custom instrumentation ([#​8230](DataDog/dd-trace-java#8230) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Enhance log probes to honor debug session tags ([#​8215](DataDog/dd-trace-java#8215) - [@​evanchooly](https://github.com/evanchooly)) - 🐛 Don't redact env tokens from debugger probe snapshots ([#​8211](DataDog/dd-trace-java#8211) - [@​watson](https://github.com/watson)) - ✨⚡ Move Trace/SpanId capture at commit time ([#​8184](DataDog/dd-trace-java#8184) - [@​jpbempel](https://github.com/jpbempel)) - 🐛 Capture values at entry for method probe ([#​8169](DataDog/dd-trace-java#8169) - [@​jpbempel](https://github.com/jpbempel)) ##### JMX fetch - 🐛 Mute JMXFetch Shutdown in progress error ([#​8068](DataDog/dd-trace-java#8068) - [@​ygree](https://github.com/ygree)) ##### OpenTracing -⚠️ 🧹 Make jnr-unixsocket an explicit dependency of dd-trace-ot ([#​8307](DataDog/dd-trace-java#8307) - [@​mcculls](https://github.com/mcculls)) ##### Profiling - 🐛 Avoid unsupported API call for creating folders on windows ([#​8304](DataDog/dd-trace-java#8304) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Tag profiles for serverless ([#​8279](DataDog/dd-trace-java#8279) - [@​jbachorik](https://github.com/jbachorik)) - ✨ add queue type and length to queue events ([#​8242](DataDog/dd-trace-java#8242) - [@​richardstartin](https://github.com/richardstartin)) - 🐛 TempLocationManager Fixes and Improvements ([#​8191](DataDog/dd-trace-java#8191) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Bump ddprof to 1.18.0 ([#​8173](DataDog/dd-trace-java#8173) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Report profiler initialization and configuration errors to telemetry ([#​8171](DataDog/dd-trace-java#8171) - [@​jbachorik](https://github.com/jbachorik)) ##### Telemetry - ✨ Add pending traces report in tracer flares ([#​8053](DataDog/dd-trace-java#8053) - [@​mhlidd](https://github.com/mhlidd)) ##### Testing - ✨ Test http server requests in parallel ([#​8222](DataDog/dd-trace-java#8222) - [@​amarziali](https://github.com/amarziali)) ##### Trace context propagation - ✨ Add non default propagator registration ([#​8310](DataDog/dd-trace-java#8310) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) ##### Tracer core - ✨ Probe for existence of IBMSASL or ACCP security providers ([#​8276](DataDog/dd-trace-java#8276) - [@​mcculls](https://github.com/mcculls)) - ✨⚡ Overhead improvement to agent feedback based sampling ([#​8265](DataDog/dd-trace-java#8265) - [@​dougqh](https://github.com/dougqh)) - 🧹 Move async propagation API from scope to tracer ([#​8231](DataDog/dd-trace-java#8231) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) - ✨ Introduce context propagation API ([#​8161](DataDog/dd-trace-java#8161) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) - ✨🧪 Use env-entry to add tags per webapp deployment ([#​8138](DataDog/dd-trace-java#8138) - [@​amarziali](https://github.com/amarziali)) - ✨ Introduce context helpers API ([#​8134](DataDog/dd-trace-java#8134) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) - ✨ Support IPv6 values for `DD_AGENT_HOST` and `DD_TRACE_AGENT_URL` ([#​7984](DataDog/dd-trace-java#7984) - [@​mhlidd](https://github.com/mhlidd)) ##### Instrumentations ##### Apache HttpComponents - 🐛 Properly finish spans and support latest apache httpclient5 ([#​8272](DataDog/dd-trace-java#8272) - [@​amarziali](https://github.com/amarziali)) ##### AWS Lambda instrumentation - 🐛 Properly capture lambda payloads for all handler types. ([#​8264](DataDog/dd-trace-java#8264) - [@​purple4reina](https://github.com/purple4reina)) ##### AWS S3 instrumentation - 💡 Create S3 instrumentation + add span pointers ([#​8075](DataDog/dd-trace-java#8075) - [@​nhulston](https://github.com/nhulston)) ##### AWS SDK instrumentation - 🐛 Revert "Add avoid double instrumenting lambda non-streaming handlers." ([#​8247](DataDog/dd-trace-java#8247) - [@​nhulston](https://github.com/nhulston)) ##### Cassandra - ✨ Allow extracting keyspace from statement result ([#​8239](DataDog/dd-trace-java#8239) - [@​amarziali](https://github.com/amarziali)) ##### Core Java language instrumentation - ✨ Propagation of translateEscapes of String class ([#​8186](DataDog/dd-trace-java#8186) - [@​sezen-datadog](https://github.com/sezen-datadog)) ##### Eclipse Vert.x instrumentation - 🐛 Fix vertx worker propagation and error handling ([#​8237](DataDog/dd-trace-java#8237) - [@​amarziali](https://github.com/amarziali)) - ✨ Support vertx 5 ([#​8220](DataDog/dd-trace-java#8220) - [@​amarziali](https://github.com/amarziali)) - ✨ Add support for session tracking in Vertx ([#​8167](DataDog/dd-trace-java#8167) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) ##### Kafka instrumentation - 🐛 Prevent possible NPE calculating Kafka record header size ([#​8292](DataDog/dd-trace-java#8292) - [@​ygree](https://github.com/ygree)) ##### Mule instrumentation - 🐛 Fix crash using Mule with JPMS ([#​8187](DataDog/dd-trace-java#8187) - [@​amarziali](https://github.com/amarziali)) ##### Protocol Buffer instrumentation - ✨ Change hash computation for protobuf to better represent impacting changes + save proto number in schema ([#​8201](DataDog/dd-trace-java#8201) - [@​vandonr](https://github.com/vandonr)) ##### Spring instrumentation - 🐛 Preserve getQualifier from spring scheduling runnables ([#​8293](DataDog/dd-trace-java#8293) - [@​amarziali](https://github.com/amarziali)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 6pm every weekday,before 2am every weekday" in timezone Australia/Melbourne, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). GitOrigin-RevId: bb09d47e4eed77a003f630273b4d0a84003eb899
This reverts commit a3a8fe6.
What Does This Do
This PR concerns JEE web deployments only.
It adds the possibility to configure a set of tags to be added to each local root span per web deployment.
The tags are expressed as part of
env-entryon theweb.xml.A tag can be added by declaring an env entry bindable on the namespace
java:comp/env/datadog/tags/An example:
This mechanism can also be used to configure a separate service name for each webapp since the tag
servicehas a special meaning andTagInterceptoruse its value to set the service nameExample:
That feature works today only with tomcat 9+ and wildfly 9+ .
Motivation
Additional Notes
Contributor Checklist
type:and (comp:orinst:) labels in addition to any usefull labelsclose,fixor any linking keywords when referencing an issue.Use
solvesinstead, and assign the PR milestone to the issueJira ticket: [PROJ-IDENT]