diff --git a/.circleci/config.continue.yml.j2 b/.circleci/config.continue.yml.j2 index 7976b31ac8f..53b319fb0d9 100644 --- a/.circleci/config.continue.yml.j2 +++ b/.circleci/config.continue.yml.j2 @@ -953,13 +953,23 @@ jobs: no_output_timeout: 5m command: | cd system-tests - DD_SITE=datadoghq.com DD_API_KEY=$SYSTEM_TESTS_E2E_DD_API_KEY DD_APPLICATION_KEY=$SYSTEM_TESTS_E2E_DD_APP_KEY ./run.sh DEBUGGER_SCENARIOS + export DD_API_KEY=$SYSTEM_TESTS_E2E_DD_API_KEY + ./run.sh DEBUGGER_SCENARIOS + + - run: + name: Collect log files + no_output_timeout: 5m + command: | + mkdir -p logs_debugger + for dir in system-tests/logs*/; do + cp -r "$dir" logs_debugger + done - store_test_results: - path: system-tests/logs_debugger* + path: logs_debugger - store_artifacts: - path: system-tests/logs_debugger* + path: logs_debugger parametric-tests: machine: diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 2102bbe261a..c0fb4db7744 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -6,12 +6,11 @@ # Contributor Checklist -- [ ] Format the title [according the contribution guidelines](https://github.com/DataDog/dd-trace-java/blob/master/CONTRIBUTING.md#title-format) -- [ ] Assign the `type:` and (`comp:` or `inst:`) labels in addition to [any usefull labels](https://github.com/DataDog/dd-trace-java/blob/master/CONTRIBUTING.md#labels) -- [ ] Squash your commits prior merging or merge using GitHub's [Squash and merge](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-commits) -- [ ] Don't use `close`, `fix` or any [linking keywords](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) when referencing an issue. +- Format the title [according the contribution guidelines](https://github.com/DataDog/dd-trace-java/blob/master/CONTRIBUTING.md#title-format) +- Assign the `type:` and (`comp:` or `inst:`) labels in addition to [any usefull labels](https://github.com/DataDog/dd-trace-java/blob/master/CONTRIBUTING.md#labels) +- Don't use `close`, `fix` or any [linking keywords](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) when referencing an issue. Use `solves` instead, and assign the PR [milestone](https://github.com/DataDog/dd-trace-java/milestones) to the issue -- [ ] Update the [public documentation](https://docs.datadoghq.com/tracing/trace_collection/library_config/java/) in case of new configuration flag or behavior +- Update the [public documentation](https://docs.datadoghq.com/tracing/trace_collection/library_config/java/) in case of new configuration flag or behavior Jira ticket: [PROJ-IDENT] diff --git a/.github/workflows/check-pull-requests.yaml b/.github/workflows/check-pull-requests.yaml index 96c17b996dc..d4a9733f88d 100644 --- a/.github/workflows/check-pull-requests.yaml +++ b/.github/workflows/check-pull-requests.yaml @@ -1,7 +1,7 @@ name: Check pull requests on: pull_request: - types: [opened, edited, labeled, unlabeled] + types: [opened, edited, ready_for_review, labeled, unlabeled] branches: - master - release/v* @@ -38,14 +38,22 @@ jobs: if (titleCheckFailed) { core.setFailed('Please remove the tag from the pull request title.') } + // Check body does + const linkingKeywords = ['closes', 'closed', 'fix', 'fixes', 'fixed', 'resolve', 'resolves', 'resolved'] + const body = context.payload.pull_request.body + const bodyCheckFailed = linkingKeywords.some(keyword => body.search(new RegExp(`${keyword}\\s\\d+`, "im")) !== -1) + if (bodyCheckFailed) { + core.setFailed('Please remove the issue linking keyword from the pull request body.') + } // Add comment to the pull request - if (labelsCheckFailed || titleCheckFailed) { + if (labelsCheckFailed || titleCheckFailed || bodyCheckFailed) { // Define comment body const commentMarker = '' const commentBody = 'Hi! 👋 Thanks for your pull request! 🎉\n\n' + 'To help us review it, please make sure to:\n\n' + (labelsCheckFailed ? '* Add at least one type, and one component or instrumentation label to the pull request\n' : '') + (titleCheckFailed ? '* Remove the tag from the pull request title\n' : '') + + (bodyCheckFailed ? '* Remove the issue linking keyword\n' : '') + '\nIf you need help, please check our [contributing guidelines](https://github.com/DataDog/dd-trace-java/blob/master/CONTRIBUTING.md).' + '\n\n' + commentMarker // Look for previous comment diff --git a/.github/workflows/tests/check-pull-requests/payload-pull-request-draft.json b/.github/workflows/tests/check-pull-requests/payload-pull-request-draft.json index 322bc9758f5..c81fb0df419 100644 --- a/.github/workflows/tests/check-pull-requests/payload-pull-request-draft.json +++ b/.github/workflows/tests/check-pull-requests/payload-pull-request-draft.json @@ -3,6 +3,7 @@ "number": 7884, "draft": true, "labels": [], - "title": "Adding some new features" + "title": "Adding some new features", + "body": "# What Does This Do\n\nThis PR introduces a workflow that checks PRs contributing guidelines." } } diff --git a/.github/workflows/tests/check-pull-requests/payload-pull-request-instrumentation.json b/.github/workflows/tests/check-pull-requests/payload-pull-request-instrumentation.json index dbdf611baad..9ea97e145c6 100644 --- a/.github/workflows/tests/check-pull-requests/payload-pull-request-instrumentation.json +++ b/.github/workflows/tests/check-pull-requests/payload-pull-request-instrumentation.json @@ -10,6 +10,7 @@ "name": "type: bug" } ], - "title": "Adding some new features" + "title": "Adding some new features", + "body": "# What Does This Do\n\nThis PR introduces a workflow that checks PRs contributing guidelines." } } diff --git a/.github/workflows/tests/check-pull-requests/payload-pull-request-linking-issue.json b/.github/workflows/tests/check-pull-requests/payload-pull-request-linking-issue.json new file mode 100644 index 00000000000..1d4b389883b --- /dev/null +++ b/.github/workflows/tests/check-pull-requests/payload-pull-request-linking-issue.json @@ -0,0 +1,16 @@ +{ + "pull_request": { + "number": 7884, + "draft": false, + "labels": [ + { + "name": "comp: api" + }, + { + "name": "type: enhancement" + } + ], + "title": "Adding some new features", + "body": "# What Does This Do\n\nThis PR introduces a workflow to check that PRs labels and title match the contributing guidelines.\nIt fixes #1234 amoung other issues." + } +} diff --git a/.github/workflows/tests/check-pull-requests/payload-pull-request-missing-label.json b/.github/workflows/tests/check-pull-requests/payload-pull-request-missing-label.json index eb46ed8c61b..0f3262b688b 100644 --- a/.github/workflows/tests/check-pull-requests/payload-pull-request-missing-label.json +++ b/.github/workflows/tests/check-pull-requests/payload-pull-request-missing-label.json @@ -7,6 +7,7 @@ "name": "comp: api" } ], - "title": "Adding some new features" + "title": "Adding some new features", + "body": "# What Does This Do\n\nThis PR introduces a workflow that checks PRs contributing guidelines." } } diff --git a/.github/workflows/tests/check-pull-requests/payload-pull-request-no-release-notes.json b/.github/workflows/tests/check-pull-requests/payload-pull-request-no-release-notes.json index fc64268cbf2..2ea4f92b89e 100644 --- a/.github/workflows/tests/check-pull-requests/payload-pull-request-no-release-notes.json +++ b/.github/workflows/tests/check-pull-requests/payload-pull-request-no-release-notes.json @@ -7,6 +7,7 @@ "name": "tag: no release notes" } ], - "title": "Adding some new features" + "title": "Adding some new features", + "body": "# What Does This Do\n\nThis PR introduces a workflow that checks PRs contributing guidelines." } } diff --git a/.github/workflows/tests/check-pull-requests/payload-pull-request-title-tag.json b/.github/workflows/tests/check-pull-requests/payload-pull-request-title-tag.json index de0161d0064..0ba19508205 100644 --- a/.github/workflows/tests/check-pull-requests/payload-pull-request-title-tag.json +++ b/.github/workflows/tests/check-pull-requests/payload-pull-request-title-tag.json @@ -10,6 +10,7 @@ "name": "type: enhancement" } ], - "title": "[API] Adding some new features" + "title": "[API] Adding some new features", + "body": "# What Does This Do\n\nThis PR introduces a workflow that checks PRs contributing guidelines." } } diff --git a/.github/workflows/tests/check-pull-requests/payload-pull-request.json b/.github/workflows/tests/check-pull-requests/payload-pull-request.json index a18692a8a61..38c55efb94e 100644 --- a/.github/workflows/tests/check-pull-requests/payload-pull-request.json +++ b/.github/workflows/tests/check-pull-requests/payload-pull-request.json @@ -10,6 +10,7 @@ "name": "type: enhancement" } ], - "title": "Adding some new features" + "title": "Adding some new features", + "body": "# What Does This Do\n\nThis PR introduces a workflow that checks PRs contributing guidelines." } } diff --git a/.github/workflows/tests/check-pull-requests/test-pull-request.sh b/.github/workflows/tests/check-pull-requests/test-pull-request.sh index 47a58f18bad..f37935140a6 100755 --- a/.github/workflows/tests/check-pull-requests/test-pull-request.sh +++ b/.github/workflows/tests/check-pull-requests/test-pull-request.sh @@ -5,4 +5,5 @@ testworkflow pull_request instrumentation && \ testworkflow pull_request draft && \ testworkflow pull_request no-release-notes && \ ! testworkflow pull_request missing-label && \ -! testworkflow pull_request title-tag +! testworkflow pull_request title-tag && \ +! testworkflow pull_request linking-issue diff --git a/components/json/gradle.lockfile b/components/json/gradle.lockfile new file mode 100644 index 00000000000..867461db86a --- /dev/null +++ b/components/json/gradle.lockfile @@ -0,0 +1,118 @@ +# This is a Gradle generated file for dependency locking. +# Manual edits can break the build and are not advised. +# This file is expected to be part of source control. +ch.qos.logback:logback-classic:1.2.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +ch.qos.logback:logback-core:1.2.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.beust:jcommander:1.78=jmhRuntimeClasspath,testRuntimeClasspath +com.github.javaparser:javaparser-core:3.25.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.spotbugs:spotbugs-annotations:4.2.0=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.spotbugs:spotbugs-annotations:4.7.3=spotbugs +com.github.spotbugs:spotbugs:4.7.3=spotbugs +com.google.code.findbugs:jsr305:3.0.2=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath +com.google.code.gson:gson:2.9.1=spotbugs +com.thoughtworks.qdox:qdox:1.12.1=jmhRuntimeClasspath,testRuntimeClasspath +commons-codec:commons-codec:1.15=spotbugs +de.thetaphi:forbiddenapis:3.1=compileClasspath,jmhCompileClasspath +info.picocli:picocli:4.6.3=jmhRuntimeClasspath,testRuntimeClasspath +jaxen:jaxen:1.2.0=spotbugs +jline:jline:2.14.6=jmhRuntimeClasspath,testRuntimeClasspath +junit:junit:4.13.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +net.jcip:jcip-annotations:1.0=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath +net.sf.jopt-simple:jopt-simple:5.0.4=jmh,jmhCompileClasspath,jmhRuntimeClasspath +net.sf.saxon:Saxon-HE:11.4=spotbugs +org.apache.ant:ant-antlr:1.10.12=jmhRuntimeClasspath,testRuntimeClasspath +org.apache.ant:ant-antlr:1.9.15=codenarc +org.apache.ant:ant-junit:1.10.12=jmhRuntimeClasspath,testRuntimeClasspath +org.apache.ant:ant-junit:1.9.15=codenarc +org.apache.ant:ant-launcher:1.10.12=jmhRuntimeClasspath,testRuntimeClasspath +org.apache.ant:ant:1.10.12=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.bcel:bcel:6.5.0=spotbugs +org.apache.commons:commons-lang3:3.12.0=pitest,spotbugs +org.apache.commons:commons-math3:3.2=jmh,jmhCompileClasspath,jmhRuntimeClasspath +org.apache.commons:commons-text:1.10.0=pitest,spotbugs +org.apache.httpcomponents.client5:httpclient5:5.1.3=spotbugs +org.apache.httpcomponents.core5:httpcore5-h2:5.1.3=spotbugs +org.apache.httpcomponents.core5:httpcore5:5.1.3=spotbugs +org.apache.logging.log4j:log4j-api:2.19.0=spotbugs +org.apache.logging.log4j:log4j-core:2.19.0=spotbugs +org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath +org.codehaus.groovy:groovy-all:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-ant:2.5.14=codenarc +org.codehaus.groovy:groovy-ant:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-astbuilder:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-cli-picocli:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-console:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-datetime:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-docgenerator:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-groovydoc:2.5.14=codenarc +org.codehaus.groovy:groovy-groovydoc:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-groovysh:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-jmx:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-json:2.5.14=codenarc +org.codehaus.groovy:groovy-json:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-jsr223:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-macro:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-nio:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-servlet:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-sql:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-swing:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-templates:2.5.14=codenarc +org.codehaus.groovy:groovy-templates:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-test-junit5:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-test:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-testng:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-xml:2.5.14=codenarc +org.codehaus.groovy:groovy-xml:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy:2.5.14=codenarc +org.codehaus.groovy:groovy:3.0.17=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codenarc:CodeNarc:2.2.0=codenarc +org.dom4j:dom4j:2.1.3=spotbugs +org.gmetrics:GMetrics:1.1=codenarc +org.hamcrest:hamcrest-core:1.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.hamcrest:hamcrest:2.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jacoco:org.jacoco.agent:0.8.5=jacocoAgent,jacocoAnt +org.jacoco:org.jacoco.ant:0.8.5=jacocoAnt +org.jacoco:org.jacoco.core:0.8.5=jacocoAnt +org.jacoco:org.jacoco.report:0.8.5=jacocoAnt +org.junit.jupiter:junit-jupiter-api:5.9.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-engine:5.9.2=jmhRuntimeClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-params:5.9.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter:5.9.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-commons:1.9.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.9.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-launcher:1.9.2=jmhRuntimeClasspath,testRuntimeClasspath +org.junit:junit-bom:5.9.1=spotbugs +org.junit:junit-bom:5.9.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.objenesis:objenesis:3.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.openjdk.jmh:jmh-core:1.36=jmh,jmhCompileClasspath,jmhRuntimeClasspath +org.openjdk.jmh:jmh-generator-asm:1.36=jmh,jmhCompileClasspath,jmhRuntimeClasspath +org.openjdk.jmh:jmh-generator-bytecode:1.36=jmh,jmhCompileClasspath,jmhRuntimeClasspath +org.openjdk.jmh:jmh-generator-reflection:1.36=jmh,jmhCompileClasspath,jmhRuntimeClasspath +org.opentest4j:opentest4j:1.2.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.ow2.asm:asm-analysis:7.2=jacocoAnt +org.ow2.asm:asm-analysis:9.4=spotbugs +org.ow2.asm:asm-commons:7.2=jacocoAnt +org.ow2.asm:asm-commons:9.4=spotbugs +org.ow2.asm:asm-tree:7.2=jacocoAnt +org.ow2.asm:asm-tree:9.4=spotbugs +org.ow2.asm:asm-util:9.4=spotbugs +org.ow2.asm:asm:7.2=jacocoAnt +org.ow2.asm:asm:9.0=jmh,jmhCompileClasspath,jmhRuntimeClasspath +org.ow2.asm:asm:9.4=spotbugs +org.pitest:pitest-command-line:1.9.11=pitest +org.pitest:pitest-entry:1.9.11=pitest +org.pitest:pitest:1.9.11=pitest +org.slf4j:jcl-over-slf4j:1.7.30=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:jul-to-slf4j:1.7.30=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:log4j-over-slf4j:1.7.30=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:slf4j-api:1.7.30=testCompileClasspath +org.slf4j:slf4j-api:1.7.32=jmhRuntimeClasspath,testRuntimeClasspath +org.slf4j:slf4j-api:2.0.0=spotbugs,spotbugsSlf4j +org.slf4j:slf4j-simple:2.0.0=spotbugsSlf4j +org.spockframework:spock-core:2.2-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.spockframework:spock-junit4:2.2-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.testng:testng:7.5=jmhRuntimeClasspath,testRuntimeClasspath +org.webjars:jquery:3.5.1=jmhRuntimeClasspath,testRuntimeClasspath +org.xmlresolver:xmlresolver:4.4.3=spotbugs +xml-apis:xml-apis:1.4.01=spotbugs +empty=annotationProcessor,jmhAnnotationProcessor,runtimeClasspath,spotbugsPlugins,testAnnotationProcessor diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ConfigurationApiImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ConfigurationApiImpl.java index fb4b59b280c..9667357ca03 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ConfigurationApiImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ConfigurationApiImpl.java @@ -168,7 +168,8 @@ public SkippableTests getSkippableTests(TracerEnvironment tracerEnvironment) thr for (DataDto dataDto : response.data) { TestIdentifierJson testIdentifierJson = dataDto.getAttributes(); Configurations conf = testIdentifierJson.getConfigurations(); - String moduleName = (conf != null ? conf : requestConf).getTestBundle(); + String moduleName = + (conf != null && conf.getTestBundle() != null ? conf : requestConf).getTestBundle(); testIdentifiersByModule .computeIfAbsent(moduleName, k -> new HashMap<>()) .put(testIdentifierJson.toTestIdentifier(), testIdentifierJson.toTestMetadata()); @@ -211,12 +212,15 @@ public Map> getFlakyTestsByModule( LOGGER.debug("Received {} flaky tests in total", response.size()); + Configurations requestConf = tracerEnvironment.getConfigurations(); + int flakyTestsCount = 0; Map> testIdentifiers = new HashMap<>(); for (DataDto dataDto : response) { TestIdentifierJson testIdentifierJson = dataDto.getAttributes(); - Configurations configurations = testIdentifierJson.getConfigurations(); - String moduleName = configurations.getTestBundle(); + Configurations conf = testIdentifierJson.getConfigurations(); + String moduleName = + (conf != null && conf.getTestBundle() != null ? conf : requestConf).getTestBundle(); testIdentifiers .computeIfAbsent(moduleName, k -> new HashSet<>()) .add(testIdentifierJson.toTestIdentifier()); diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/AbstractTestSession.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/AbstractTestSession.java index ff1de16e33e..407f5042119 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/AbstractTestSession.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/AbstractTestSession.java @@ -1,5 +1,6 @@ package datadog.trace.civisibility.domain; +import static datadog.trace.api.TracePropagationStyle.NONE; import static datadog.trace.api.civisibility.CIConstants.CI_VISIBILITY_INSTRUMENTATION_NAME; import datadog.trace.api.Config; @@ -17,9 +18,11 @@ import datadog.trace.api.civisibility.telemetry.tag.IsHeadless; import datadog.trace.api.civisibility.telemetry.tag.IsUnsupportedCI; import datadog.trace.api.civisibility.telemetry.tag.Provider; +import datadog.trace.api.sampling.PrioritySampling; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes; +import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.bootstrap.instrumentation.api.Tags; import datadog.trace.civisibility.codeowners.Codeowners; import datadog.trace.civisibility.decorator.TestDecorator; @@ -65,7 +68,16 @@ public AbstractTestSession( // CI Test Cycle protocol requires session's trace ID and span ID to be the same IdGenerationStrategy idGenerationStrategy = config.getIdGenerationStrategy(); DDTraceId traceId = idGenerationStrategy.generateTraceId(); - AgentSpan.Context traceContext = new TraceContext(traceId); + AgentSpan.Context traceContext = + new TagContext( + CIConstants.CIAPP_TEST_ORIGIN, + Collections.emptyMap(), + null, + null, + PrioritySampling.UNSET, + null, + NONE, + traceId); AgentTracer.SpanBuilder spanBuilder = AgentTracer.get() diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java index ea3dcff6c2b..5f9dbc76a41 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java @@ -27,6 +27,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes; +import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.bootstrap.instrumentation.api.Tags; import datadog.trace.civisibility.codeowners.Codeowners; import datadog.trace.civisibility.decorator.TestDecorator; @@ -35,6 +36,7 @@ import datadog.trace.civisibility.source.SourceResolutionException; import java.lang.reflect.Method; import java.util.Collection; +import java.util.Collections; import java.util.function.Consumer; import javax.annotation.Nullable; import org.slf4j.Logger; @@ -85,11 +87,13 @@ public TestImpl( this.context = new TestContextImpl(coverageStore); + AgentSpan.Context traceContext = + new TagContext(CIConstants.CIAPP_TEST_ORIGIN, Collections.emptyMap()); AgentTracer.SpanBuilder spanBuilder = AgentTracer.get() .buildSpan(CI_VISIBILITY_INSTRUMENTATION_NAME, testDecorator.component() + ".test") .ignoreActiveSpan() - .asChildOf(null) + .asChildOf(traceContext) .withRequestContextData(RequestContextSlot.CI_VISIBILITY, context); if (startTime != null) { diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TraceContext.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TraceContext.java deleted file mode 100644 index 536d2bf62a2..00000000000 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TraceContext.java +++ /dev/null @@ -1,55 +0,0 @@ -package datadog.trace.civisibility.domain; - -import datadog.trace.api.DDSpanId; -import datadog.trace.api.DDTraceId; -import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.api.AgentTraceCollector; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; -import java.util.Collections; -import java.util.Map; - -/** - * Test session spans need to have trace ID and span ID which are identical (CI Test Cycle protocol - * requirement), so this dummy context class is used as a crutch to supply a specific trace ID when - * creating a session span. - */ -public class TraceContext implements AgentSpan.Context { - - private final DDTraceId traceId; - - public TraceContext(DDTraceId traceId) { - this.traceId = traceId; - } - - @Override - public DDTraceId getTraceId() { - return traceId; - } - - @Override - public long getSpanId() { - return DDSpanId.ZERO; - } - - @Override - public AgentTraceCollector getTraceCollector() { - return AgentTracer.NoopAgentTraceCollector.INSTANCE; - } - - @Override - public int getSamplingPriority() { - return PrioritySampling.UNSET; - } - - @Override - public Iterable> baggageItems() { - return Collections.emptyList(); - } - - @Override - public PathwayContext getPathwayContext() { - return AgentTracer.NoopPathwayContext.INSTANCE; - } -} diff --git a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy index a51decdf1ff..a87c43025a1 100644 --- a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy +++ b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy @@ -142,12 +142,14 @@ class ConfigurationApiImplTest extends Specification { return } + def testBundle = requestConfs['test.bundle'] + def moduleATest = """{ "id": "49968354e2091cdb", "type": "test", "attributes": { "configurations": { - "test.bundle": "testBundle-a", + ${!testBundle ? '"test.bundle": "testBundle-a",' : ""} "custom": { "customTag": "customValue" } @@ -164,7 +166,7 @@ class ConfigurationApiImplTest extends Specification { "type": "test", "attributes": { "configurations": { - "test.bundle": "testBundle-b", + ${!testBundle ? '"test.bundle": "testBundle-b",' : ""} "custom": { "customTag": "customValue" } @@ -175,8 +177,115 @@ class ConfigurationApiImplTest extends Specification { } }""" + def tests = [] + if (!testBundle || testBundle == 'testBundle-a') { + tests << moduleATest + } + if (!testBundle || testBundle == 'testBundle-b') { + tests << moduleBTest + } + + def response = response + def requestBody = """ +{ + "data": [ + ${tests.join(',')} + ], + "meta": { + "correlation_id": "11223344", + "coverage": { + "src/main/java/Calculator.java": "/8AA/w==", + "src/main/java/utils/Math.java": "AAAAf+AA/A==", + "src/test/java/CalculatorTest.java": "//AAeAAA/A==" + } + } +} +""".bytes + + def header = request.getHeader("Accept-Encoding") + def gzipSupported = header != null && header.contains("gzip") + if (gzipSupported) { + response.addHeader("Content-Encoding", "gzip") + requestBody = gzip(requestBody) + } + + response.status(200).send(requestBody) + } + + prefix("/api/v2/ci/libraries/tests/flaky") { + def requestJson = moshi.adapter(Map).fromJson(new String(request.body)) + + // assert request contents + def requestData = requestJson['data'] + if (requestData['type'] != "flaky_test_from_libraries_params" + || requestData['id'] != "1234" + ) { + response.status(400).send() + return + } + + def requestAttrs = requestData['attributes'] + if (requestAttrs['service'] != "foo" + || requestAttrs['env'] != "foo_env" + || requestAttrs['repository_url'] != "https://github.com/DataDog/foo" + || requestAttrs['branch'] != "prod" + || requestAttrs['sha'] != "d64185e45d1722ab3a53c45be47accae" + || requestAttrs['test_level'] != "test" + ) { + response.status(400).send() + return + } + + def requestConfs = requestAttrs['configurations'] + if (requestConfs['os.platform'] != "linux" + || requestConfs['os.architecture'] != "amd64" + || requestConfs['os.arch'] != "amd64" + || requestConfs['os.version'] != "bionic" + || requestConfs['runtime.name'] != "runtimeName" + || requestConfs['runtime.version'] != "runtimeVersion" + || requestConfs['runtime.vendor'] != "vendor" + || requestConfs['runtime.architecture'] != "amd64" + || requestConfs['custom']['customTag'] != "customValue" + ) { + response.status(400).send() + return + } + def testBundle = requestConfs['test.bundle'] + def moduleATest = """{ + "id": "49968354e2091cdb", + "type": "test", + "attributes": { + "configurations": { + ${!testBundle ? '"test.bundle": "testBundle-a",' : ""} + "custom": { + "customTag": "customValue" + } + }, + "suite": "suite-a", + "name": "name-a", + "parameters": "parameters-a", + "_missing_line_code_coverage": true + } + }""" + + def moduleBTest = """{ + "id": "49968354e2091cdc", + "type": "test", + "attributes": { + "configurations": { + ${!testBundle ? '"test.bundle": "testBundle-b",' : ""} + "custom": { + "customTag": "customValue" + } + }, + "suite": "suite-b", + "name": "name-b", + "parameters": "parameters-b" + } + }""" + def tests = [] if (!testBundle || testBundle == 'testBundle-a') { tests << moduleATest @@ -372,6 +481,45 @@ class ConfigurationApiImplTest extends Specification { ] } + def "test flaky tests request: #displayName"() { + given: + def tracerEnvironment = givenTracerEnvironment() + def metricCollector = Stub(CiVisibilityMetricCollector) + + when: + def configurationApi = new ConfigurationApiImpl(api, metricCollector, () -> "1234") + def flakyTests = configurationApi.getFlakyTestsByModule(tracerEnvironment) + + then: + flakyTests == [ + "testBundle-a": new HashSet<>([ new TestIdentifier("suite-a", "name-a", "parameters-a") ]), + "testBundle-b": new HashSet<>([ new TestIdentifier("suite-b", "name-b", "parameters-b") ]), + ] + + where: + api | displayName + givenEvpProxy(false) | "EVP proxy, compression disabled" + givenEvpProxy(true) | "EVP proxy, compression enabled" + givenIntakeApi(false) | "intake, compression disabled" + givenIntakeApi(true) | "intake, compression enabled" + } + + def "test flaky tests request with module name"() { + given: + def tracerEnvironment = givenTracerEnvironment("testBundle-a") + def metricCollector = Stub(CiVisibilityMetricCollector) + def api = givenIntakeApi(false) + + when: + def configurationApi = new ConfigurationApiImpl(api, metricCollector, () -> "1234") + def flakyTests = configurationApi.getFlakyTestsByModule(tracerEnvironment) + + then: + flakyTests == [ + "testBundle-a": new HashSet<>([ new TestIdentifier("suite-a", "name-a", "parameters-a") ]) + ] + } + private static BitSet bits(int... bits) { BitSet bitSet = new BitSet() for (int bit : bits) { diff --git a/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/spanorigin/CodeOriginInfo.java b/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/spanorigin/CodeOriginInfo.java index 204e37bed9d..f3b6b00ae8a 100644 --- a/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/spanorigin/CodeOriginInfo.java +++ b/dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/spanorigin/CodeOriginInfo.java @@ -17,7 +17,7 @@ public static void exit(AgentSpan span) { if (InstrumenterConfig.get().isCodeOriginEnabled()) { String probeId = captureCodeOrigin(false); if (span != null) { - span.getLocalRootSpan().setTag(probeId, span.getSpanId()); + span.getLocalRootSpan().setTag(probeId, span); } } } diff --git a/dd-java-agent/agent-iast/src/main/java/com/datadog/iast/propagation/StringModuleImpl.java b/dd-java-agent/agent-iast/src/main/java/com/datadog/iast/propagation/StringModuleImpl.java index 4ef50cb6b1e..7d8124b9118 100644 --- a/dd-java-agent/agent-iast/src/main/java/com/datadog/iast/propagation/StringModuleImpl.java +++ b/dd-java-agent/agent-iast/src/main/java/com/datadog/iast/propagation/StringModuleImpl.java @@ -128,6 +128,45 @@ public void onStringBuilderAppend( } } + @Override + public void onStringBuilderAppend( + @Nonnull CharSequence builder, @Nullable CharSequence param, int start, int end) { + if (!canBeTainted(builder) || !canBeTainted(param)) { + return; + } + if (start < 0 || end > param.length() || start > end) { + return; + } + final IastContext ctx = IastContext.Provider.get(); + if (ctx == null) { + return; + } + final TaintedObjects taintedObjects = ctx.getTaintedObjects(); + final TaintedObject paramTainted = taintedObjects.get(param); + if (paramTainted == null) { + return; + } + // We get the ranges for the new substring that will be appended to the builder + final Range[] paramRanges = paramTainted.getRanges(); + final Range[] newParamRanges = Ranges.forSubstring(start, end - start, paramRanges); + if (newParamRanges == null) { + return; + } + final TaintedObject builderTainted = taintedObjects.get(builder); + // If the builder is not tainted we must shift the ranges of the parameter + // Else we shift the ranges of the parameter and merge with the ranges of the builder + final int shift = builder.length() - (end - start); + if (builderTainted == null) { + final Range[] ranges = new Range[newParamRanges.length]; + Ranges.copyShift(newParamRanges, ranges, 0, shift); + taintedObjects.taint(builder, ranges); + } else { + final Range[] builderRanges = builderTainted.getRanges(); + final Range[] ranges = mergeRanges(shift, builderRanges, newParamRanges); + builderTainted.setRanges(ranges); + } + } + @Override public void onStringBuilderToString( @Nonnull final CharSequence builder, @Nonnull final String result) { diff --git a/dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/propagation/StringModuleTest.groovy b/dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/propagation/StringModuleTest.groovy index 99b17559b4b..06ed21ce670 100644 --- a/dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/propagation/StringModuleTest.groovy +++ b/dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/propagation/StringModuleTest.groovy @@ -131,6 +131,80 @@ class StringModuleTest extends IastModuleImplTestBase { sb('1==>234<==5==>678<==9') | 'a==>bcd<==e==>fgh<==i' | 1 | '1==>234<==5==>678<==9a==>bcd<==e==>fgh<==i' } + void 'onStringBuilderAppend null or empty (#builder, #param, #start, #end)'() { + given: + final result = builder?.append(param, start, end) + + when: + module.onStringBuilderAppend(result, param, start, end) + + then: + 0 * _ + + where: + builder | param | start | end + sb('') | null | 0 | 0 + sb('') | '' | 0 | 0 + } + + void 'onStringBuilderAppend without span (#builder, #param, #start, #end)'() { + given: + final result = builder?.append(param, start, end) + + when: + module.onStringBuilderAppend(result, param) + + then: + mockCalls * tracer.activeSpan() >> null + 0 * _ + + where: + builder | param | start | end | mockCalls + sb('1') | null | 0 | 0 | 0 + sb('3') | '4' | 0 | 0 | 1 + } + + void 'onStringBuilderAppend (#builder, #param, #start, #end)'() { + given: + final taintedObjects = ctx.getTaintedObjects() + def builderTainted = addFromTaintFormat(taintedObjects, builder) + objectHolder.add(builderTainted) + def paramTainted = addFromTaintFormat(taintedObjects, param) + objectHolder.add(paramTainted) + builderTainted?.append(paramTainted, start, end) + + and: + final result = getStringFromTaintFormat(expected) + objectHolder.add(result) + final shouldBeTainted = fromTaintFormat(expected) != null + + when: + module.onStringBuilderAppend(builderTainted, paramTainted, start, end) + def taintedObject = taintedObjects.get(builderTainted) + + then: + if (shouldBeTainted) { + assert taintedObject != null + assert taintedObject.get() as String == result + assert taintFormat(taintedObject.get() as String, taintedObject.getRanges()) == expected + } else { + assert taintedObject == null + } + + where: + builder | param | start | end | expected + sb('123') | '456' | 0 | 3 | '123456' + sb('==>123<==') | '456' | 0 | 3 | '==>123<==456' + sb('==>123<==') | '456' | 1 | 3 | '==>123<==56' + sb('123') | '==>456<==' | 0 | 3 | '123==>456<==' + sb('123') | '==>456<==' | 1 | 2 | '123==>5<==' + sb('==>123<==') | '==>456<==' | 0 | 3 | '==>123<====>456<==' + sb('1==>234<==5==>678<==9') | 'a==>bcd<==e' | 0 | 5 | '1==>234<==5==>678<==9a==>bcd<==e' + sb('1==>234<==5==>678<==9') | 'a==>bcd<==e==>fgh<==i' | 0 | 9 | '1==>234<==5==>678<==9a==>bcd<==e==>fgh<==i' + sb('1==>234<==5==>678<==9') | 'a==>bcd<==e==>fgh<==i' | 5 | 9 | '1==>234<==5==>678<==9==>fgh<==i' + sb('1==>234<==5==>678<==9') | 'a==>bcd<==e==>fgh<==i' | 5 | 8 | '1==>234<==5==>678<==9==>fgh<==' + } + void 'onStringBuilderInit null or empty (#builder, #param)'() { given: final result = builder?.append(param) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ProxyClassIgnores.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ProxyClassIgnores.java index 7b9a0394cc9..041ba7198fe 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ProxyClassIgnores.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ProxyClassIgnores.java @@ -12,6 +12,7 @@ public static boolean isIgnored(String name) { || name.contains("$$EnhancerByGuice$$") || name.contains("$$EnhancerByProxool$$") || name.contains("$$$view") + || name.contains("$$$endpoint") // jboss mdb proxies || name.contains("$$_Weld") || name.contains("_$$_jvst")) { return true; diff --git a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientDecorator.java b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientDecorator.java index 5f9e44fd6df..e8faa71340d 100644 --- a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientDecorator.java +++ b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientDecorator.java @@ -41,6 +41,11 @@ protected URI url(final HttpUriRequest request) throws URISyntaxException { return request.getURI(); } + @Override + protected URI sourceUrl(final HttpUriRequest request) { + return request.getURI(); + } + @Override protected int status(final HttpContext context) { final Object responseObject = context.getAttribute(HttpCoreContext.HTTP_RESPONSE); diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/ApacheHttpClientDecorator.java b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/ApacheHttpClientDecorator.java index b1988a51de6..78d7958d6f6 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/ApacheHttpClientDecorator.java +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/ApacheHttpClientDecorator.java @@ -42,6 +42,11 @@ protected URI url(final HttpRequest request) throws URISyntaxException { return request.getUri(); } + @Override + protected HttpRequest sourceUrl(final HttpRequest request) { + return request; + } + @Override protected int status(final HttpResponse httpResponse) { return httpResponse.getCode(); diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HostAndRequestAsHttpUriRequest.java b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HostAndRequestAsHttpUriRequest.java index 2cc2f41ba12..da3045f8b45 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HostAndRequestAsHttpUriRequest.java +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HostAndRequestAsHttpUriRequest.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.apachehttpclient5; +import datadog.trace.api.iast.util.PropagationUtils; import java.net.URI; import java.net.URISyntaxException; import org.apache.hc.core5.http.Header; @@ -15,6 +16,9 @@ public class HostAndRequestAsHttpUriRequest extends BasicClassicHttpRequest { public HostAndRequestAsHttpUriRequest(final HttpHost httpHost, final HttpRequest httpRequest) { super(httpRequest.getMethod(), httpHost, httpRequest.getPath()); actualRequest = httpRequest; + // Propagate in case the host or request is tainted + PropagationUtils.taintObjectIfTainted(this, httpHost); + PropagationUtils.taintObjectIfTainted(this, httpRequest); } @Override diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/IastHttpUriRequestBaseInstrumentation.java b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/IastHttpUriRequestBaseInstrumentation.java new file mode 100644 index 00000000000..d5e9c0b0f3c --- /dev/null +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/IastHttpUriRequestBaseInstrumentation.java @@ -0,0 +1,53 @@ +package datadog.trace.instrumentation.apachehttpclient5; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import com.google.auto.service.AutoService; +import datadog.trace.agent.tooling.Instrumenter; +import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.agent.tooling.bytebuddy.iast.TaintableVisitor; +import datadog.trace.api.iast.InstrumentationBridge; +import datadog.trace.api.iast.Propagation; +import datadog.trace.api.iast.propagation.PropagationModule; +import java.net.URI; +import net.bytebuddy.asm.Advice; +import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase; + +@AutoService(InstrumenterModule.class) +public class IastHttpUriRequestBaseInstrumentation extends InstrumenterModule.Iast + implements Instrumenter.ForSingleType, Instrumenter.HasTypeAdvice { + + public IastHttpUriRequestBaseInstrumentation() { + super("apache-httpclient", "httpclient5"); + } + + @Override + public String instrumentedType() { + return "org.apache.hc.client5.http.classic.methods.HttpUriRequestBase"; + } + + @Override + public void typeAdvice(TypeTransformer transformer) { + transformer.applyAdvice(new TaintableVisitor(instrumentedType())); + } + + @Override + public void methodAdvice(MethodTransformer transformer) { + transformer.applyAdvice( + isConstructor().and(takesArguments(String.class, URI.class)), + IastHttpUriRequestBaseInstrumentation.class.getName() + "$CtorAdvice"); + } + + public static class CtorAdvice { + @Advice.OnMethodExit() + @Propagation + public static void afterCtor( + @Advice.This final HttpUriRequestBase self, @Advice.Argument(1) final URI uri) { + final PropagationModule module = InstrumentationBridge.PROPAGATION; + if (module != null) { + module.taintObjectIfTainted(self, uri); + } + } + } +} diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/test/groovy/IastHttpUriRequestBaseInstrumentationTest.groovy b/dd-java-agent/instrumentation/apache-httpclient-5/src/test/groovy/IastHttpUriRequestBaseInstrumentationTest.groovy new file mode 100644 index 00000000000..a3d88d683b3 --- /dev/null +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/test/groovy/IastHttpUriRequestBaseInstrumentationTest.groovy @@ -0,0 +1,29 @@ +import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.api.iast.InstrumentationBridge +import datadog.trace.api.iast.propagation.PropagationModule +import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase + +class IastHttpUriRequestBaseInstrumentationTest extends AgentTestRunner { + + @Override + protected void configurePreAgent() { + injectSysConfig('dd.iast.enabled', 'true') + } + + void 'test constructor'() { + given: + final module = Mock(PropagationModule) + InstrumentationBridge.registerIastModule(module) + + when: + HttpUriRequestBase.newInstance(method, new URI(uri)) + + then: + 1 * module.taintObjectIfTainted(_ as HttpUriRequestBase, _ as URI) + 0 * _ + + where: + method | uri + "GET" | 'http://localhost.com' + } +} diff --git a/dd-java-agent/instrumentation/apache-httpcore-5/build.gradle b/dd-java-agent/instrumentation/apache-httpcore-5/build.gradle new file mode 100644 index 00000000000..60002ac1043 --- /dev/null +++ b/dd-java-agent/instrumentation/apache-httpcore-5/build.gradle @@ -0,0 +1,20 @@ +muzzle { + pass { + group = "org.apache.httpcomponents.core5" + module = "httpcore5" + versions = "[5.0,)" + assertInverse = true + } +} + +apply from: "$rootDir/gradle/java.gradle" + +addTestSuiteForDir('latestDepTest', 'test') + +dependencies { + compileOnly group: 'org.apache.httpcomponents.core5', name: 'httpcore5', version: '5.0' + + testImplementation group: 'org.apache.httpcomponents.core5', name: 'httpcore5', version: '5.0' + + latestDepTestImplementation group: 'org.apache.httpcomponents.core5', name: 'httpcore5', version: '+' +} diff --git a/dd-java-agent/instrumentation/apache-httpcore-5/src/main/java/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentation.java b/dd-java-agent/instrumentation/apache-httpcore-5/src/main/java/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentation.java new file mode 100644 index 00000000000..67bb5f83a5a --- /dev/null +++ b/dd-java-agent/instrumentation/apache-httpcore-5/src/main/java/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentation.java @@ -0,0 +1,47 @@ +package datadog.trace.instrumentation.apachehttpcore5; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import com.google.auto.service.AutoService; +import datadog.trace.agent.tooling.Instrumenter; +import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.iast.InstrumentationBridge; +import datadog.trace.api.iast.Propagation; +import datadog.trace.api.iast.propagation.PropagationModule; +import java.net.InetAddress; +import net.bytebuddy.asm.Advice; + +@AutoService(InstrumenterModule.class) +public class IastHttpHostInstrumentation extends InstrumenterModule.Iast + implements Instrumenter.ForSingleType { + + public IastHttpHostInstrumentation() { + super("httpcore-5", "apache-httpcore-5", "apache-http-core-5"); + } + + @Override + public String instrumentedType() { + return "org.apache.hc.core5.http.HttpHost"; + } + + @Override + public void methodAdvice(MethodTransformer transformer) { + transformer.applyAdvice( + isConstructor() + .and(takesArguments(String.class, InetAddress.class, String.class, int.class)), + IastHttpHostInstrumentation.class.getName() + "$CtorAdvice"); + } + + public static class CtorAdvice { + @Advice.OnMethodExit(suppress = Throwable.class) + @Propagation + public static void afterCtor( + @Advice.This final Object self, @Advice.Argument(2) final String host) { + final PropagationModule module = InstrumentationBridge.PROPAGATION; + if (module != null) { + module.taintObjectIfTainted(self, host); + } + } + } +} diff --git a/dd-java-agent/instrumentation/apache-httpcore-5/src/test/groovy/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentationTest.groovy b/dd-java-agent/instrumentation/apache-httpcore-5/src/test/groovy/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentationTest.groovy new file mode 100644 index 00000000000..d22fed18cd8 --- /dev/null +++ b/dd-java-agent/instrumentation/apache-httpcore-5/src/test/groovy/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentationTest.groovy @@ -0,0 +1,31 @@ +package datadog.trace.instrumentation.apachehttpcore5 + +import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.api.iast.InstrumentationBridge +import datadog.trace.api.iast.propagation.PropagationModule +import org.apache.hc.core5.http.HttpHost + +class IastHttpHostInstrumentationTest extends AgentTestRunner { + + @Override + protected void configurePreAgent() { + injectSysConfig('dd.iast.enabled', 'true') + } + + void 'test constructor'(){ + given: + final module = Mock(PropagationModule) + InstrumentationBridge.registerIastModule(module) + + when: + HttpHost.newInstance(*args) + + then: + 1 * module.taintObjectIfTainted( _ as HttpHost, 'localhost') + + where: + args | _ + ['localhost'] | _ + ['localhost', 8080] | _ + } +} diff --git a/dd-java-agent/instrumentation/armeria-grpc/gradle.lockfile b/dd-java-agent/instrumentation/armeria-grpc/gradle.lockfile index ba24c103e77..05c45bb49b7 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/gradle.lockfile +++ b/dd-java-agent/instrumentation/armeria-grpc/gradle.lockfile @@ -79,15 +79,15 @@ com.google.re2j:re2j:1.2=compileClasspath com.google.re2j:re2j:1.7=compileProtoPath,instrumentPluginClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileProtoPath,testRuntimeClasspath com.linecorp.armeria:armeria-grpc-protocol:0.84.0=compileClasspath,compileProtoPath com.linecorp.armeria:armeria-grpc-protocol:1.0.0=testCompileProtoPath,testRuntimeClasspath -com.linecorp.armeria:armeria-grpc-protocol:1.31.1=latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath +com.linecorp.armeria:armeria-grpc-protocol:1.31.2=latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath com.linecorp.armeria:armeria-grpc:0.84.0=compileClasspath,compileProtoPath com.linecorp.armeria:armeria-grpc:1.0.0=testCompileClasspath,testCompileProtoPath,testRuntimeClasspath -com.linecorp.armeria:armeria-grpc:1.31.1=latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath +com.linecorp.armeria:armeria-grpc:1.31.2=latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath com.linecorp.armeria:armeria-junit4:1.0.0=latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath -com.linecorp.armeria:armeria-protobuf:1.31.1=latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath +com.linecorp.armeria:armeria-protobuf:1.31.2=latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath com.linecorp.armeria:armeria:0.84.0=compileClasspath,compileProtoPath com.linecorp.armeria:armeria:1.0.0=testCompileClasspath,testCompileProtoPath,testRuntimeClasspath -com.linecorp.armeria:armeria:1.31.1=latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath +com.linecorp.armeria:armeria:1.31.2=latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath com.squareup.moshi:moshi:1.11.0=compileClasspath,compileProtoPath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath com.squareup.okhttp3:logging-interceptor:3.12.12=latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath com.squareup.okhttp3:okhttp:3.12.12=latestDepForkedTestCompileClasspath,latestDepForkedTestCompileProtoPath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/armeria-jetty/gradle.lockfile b/dd-java-agent/instrumentation/armeria-jetty/gradle.lockfile index d2a0ca141b1..2e6b08c00a9 100644 --- a/dd-java-agent/instrumentation/armeria-jetty/gradle.lockfile +++ b/dd-java-agent/instrumentation/armeria-jetty/gradle.lockfile @@ -54,11 +54,11 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=anno com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,jetty11LatestDepTestAnnotationProcessor,jetty11TestAnnotationProcessor,jetty9LatestDepTestAnnotationProcessor,jetty9TestAnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor com.google.re2j:re2j:1.7=instrumentPluginClasspath,jetty11LatestDepTestRuntimeClasspath,jetty11TestRuntimeClasspath,jetty9LatestDepTestRuntimeClasspath,jetty9TestRuntimeClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath com.linecorp.armeria:armeria-jetty11:1.24.0=jetty11TestCompileClasspath,jetty11TestRuntimeClasspath -com.linecorp.armeria:armeria-jetty11:1.31.1=jetty11LatestDepTestCompileClasspath,jetty11LatestDepTestRuntimeClasspath +com.linecorp.armeria:armeria-jetty11:1.31.2=jetty11LatestDepTestCompileClasspath,jetty11LatestDepTestRuntimeClasspath com.linecorp.armeria:armeria-jetty9:1.24.0=compileClasspath,jetty9TestCompileClasspath,jetty9TestRuntimeClasspath -com.linecorp.armeria:armeria-jetty9:1.31.1=jetty9LatestDepTestCompileClasspath,jetty9LatestDepTestRuntimeClasspath +com.linecorp.armeria:armeria-jetty9:1.31.2=jetty9LatestDepTestCompileClasspath,jetty9LatestDepTestRuntimeClasspath com.linecorp.armeria:armeria:1.24.0=compileClasspath,jetty11TestCompileClasspath,jetty11TestRuntimeClasspath,jetty9TestCompileClasspath,jetty9TestRuntimeClasspath -com.linecorp.armeria:armeria:1.31.1=jetty11LatestDepTestCompileClasspath,jetty11LatestDepTestRuntimeClasspath,jetty9LatestDepTestCompileClasspath,jetty9LatestDepTestRuntimeClasspath +com.linecorp.armeria:armeria:1.31.2=jetty11LatestDepTestCompileClasspath,jetty11LatestDepTestRuntimeClasspath,jetty9LatestDepTestCompileClasspath,jetty9LatestDepTestRuntimeClasspath com.squareup.moshi:moshi:1.11.0=compileClasspath,instrumentPluginClasspath,jetty11LatestDepTestCompileClasspath,jetty11LatestDepTestRuntimeClasspath,jetty11TestCompileClasspath,jetty11TestRuntimeClasspath,jetty9LatestDepTestCompileClasspath,jetty9LatestDepTestRuntimeClasspath,jetty9TestCompileClasspath,jetty9TestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.squareup.okhttp3:logging-interceptor:3.12.12=jetty11LatestDepTestCompileClasspath,jetty11LatestDepTestRuntimeClasspath,jetty11TestCompileClasspath,jetty11TestRuntimeClasspath,jetty9LatestDepTestCompileClasspath,jetty9LatestDepTestRuntimeClasspath,jetty9TestCompileClasspath,jetty9TestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath com.squareup.okhttp3:okhttp:3.12.12=jetty11LatestDepTestCompileClasspath,jetty11LatestDepTestRuntimeClasspath,jetty11TestCompileClasspath,jetty11TestRuntimeClasspath,jetty9LatestDepTestCompileClasspath,jetty9LatestDepTestRuntimeClasspath,jetty9TestCompileClasspath,jetty9TestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/gradle.lockfile b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/gradle.lockfile index 1b0623b9f58..3376ad10ddc 100644 --- a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/gradle.lockfile +++ b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/gradle.lockfile @@ -186,83 +186,83 @@ org.webjars:jquery:3.5.1=latestDepForkedTestRuntimeClasspath,latestDepTestRuntim org.xmlresolver:xmlresolver:4.4.3=spotbugs software.amazon.awssdk:annotations:2.27.19=compileClasspath software.amazon.awssdk:annotations:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:annotations:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:annotations:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:apache-client:2.27.23=testRuntimeClasspath -software.amazon.awssdk:apache-client:2.29.23=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:apache-client:2.29.29=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:auth:2.27.19=compileClasspath software.amazon.awssdk:auth:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:auth:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:auth:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-core:2.27.19=compileClasspath software.amazon.awssdk:aws-core:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:aws-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:aws-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.27.19=compileClasspath software.amazon.awssdk:aws-json-protocol:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:aws-json-protocol:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:aws-json-protocol:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-query-protocol:2.27.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:checksums-spi:2.27.19=compileClasspath software.amazon.awssdk:checksums-spi:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:checksums-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:checksums-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:checksums:2.27.19=compileClasspath software.amazon.awssdk:checksums:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:checksums:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:checksums:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:endpoints-spi:2.27.19=compileClasspath software.amazon.awssdk:endpoints-spi:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:endpoints-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:endpoints-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:eventbridge:2.27.19=compileClasspath software.amazon.awssdk:eventbridge:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:eventbridge:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:eventbridge:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-auth-aws-eventstream:2.27.19=compileClasspath software.amazon.awssdk:http-auth-aws-eventstream:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-auth-aws-eventstream:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth-aws-eventstream:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-auth-aws:2.27.19=compileClasspath software.amazon.awssdk:http-auth-aws:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-auth-aws:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth-aws:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-auth-spi:2.27.19=compileClasspath software.amazon.awssdk:http-auth-spi:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-auth-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-auth:2.27.19=compileClasspath software.amazon.awssdk:http-auth:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-auth:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-client-spi:2.27.19=compileClasspath software.amazon.awssdk:http-client-spi:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-client-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-client-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:identity-spi:2.27.19=compileClasspath software.amazon.awssdk:identity-spi:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:identity-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:identity-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:json-utils:2.27.19=compileClasspath software.amazon.awssdk:json-utils:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:json-utils:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:json-utils:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:metrics-spi:2.27.19=compileClasspath software.amazon.awssdk:metrics-spi:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:metrics-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:metrics-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.27.23=testRuntimeClasspath -software.amazon.awssdk:netty-nio-client:2.29.23=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:netty-nio-client:2.29.29=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:profiles:2.27.19=compileClasspath software.amazon.awssdk:profiles:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:profiles:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:profiles:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:protocol-core:2.27.19=compileClasspath software.amazon.awssdk:protocol-core:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:protocol-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:protocol-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:regions:2.27.19=compileClasspath software.amazon.awssdk:regions:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:regions:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:regions:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:retries-spi:2.27.19=compileClasspath software.amazon.awssdk:retries-spi:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:retries-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:retries-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:retries:2.27.19=compileClasspath software.amazon.awssdk:retries:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:retries:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:retries:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:sdk-core:2.27.19=compileClasspath software.amazon.awssdk:sdk-core:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:sdk-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:sdk-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:sns:2.27.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:sqs:2.27.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:third-party-jackson-core:2.27.19=compileClasspath software.amazon.awssdk:third-party-jackson-core:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:third-party-jackson-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:third-party-jackson-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:utils:2.27.19=compileClasspath software.amazon.awssdk:utils:2.27.23=testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:utils:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:utils:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.eventstream:eventstream:1.0.1=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath xml-apis:xml-apis:1.4.01=spotbugs empty=spotbugsPlugins diff --git a/dd-java-agent/instrumentation/aws-java-sdk-2.2/gradle.lockfile b/dd-java-agent/instrumentation/aws-java-sdk-2.2/gradle.lockfile index 5d8e756c2a6..d34c8e2c6a6 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-2.2/gradle.lockfile +++ b/dd-java-agent/instrumentation/aws-java-sdk-2.2/gradle.lockfile @@ -268,14 +268,14 @@ software.amazon.awssdk:annotations:2.2.0=compileClasspath,testCompileClasspath,t software.amazon.awssdk:annotations:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:annotations:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:annotations:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:annotations:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:annotations:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:apache-client:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:apache-client:2.19.0=payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:apache-client:2.2.0=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingTestCompileClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingTestCompileClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:apache-client:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:apache-client:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:apache-client:2.25.40=latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:apache-client:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:apache-client:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:apigateway:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:apigateway:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:apigateway:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath @@ -287,40 +287,40 @@ software.amazon.awssdk:auth:2.2.0=compileClasspath,testCompileClasspath,testRunt software.amazon.awssdk:auth:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:auth:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:auth:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:auth:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:auth:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:aws-cbor-protocol:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:aws-cbor-protocol:2.2.0=testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:aws-cbor-protocol:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-cbor-protocol:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath -software.amazon.awssdk:aws-cbor-protocol:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:aws-cbor-protocol:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:aws-core:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:aws-core:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:aws-core:2.2.0=compileClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:aws-core:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-core:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:aws-core:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:aws-core:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:aws-core:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.2.0=testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:aws-json-protocol:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:aws-json-protocol:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:aws-query-protocol:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:aws-query-protocol:2.2.0=kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:aws-query-protocol:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-query-protocol:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:aws-query-protocol:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:aws-query-protocol:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:aws-xml-protocol:2.18.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:aws-xml-protocol:2.2.0=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:aws-xml-protocol:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:checksums-spi:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:checksums-spi:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:checksums-spi:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:checksums-spi:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:checksums:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:checksums:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:checksums:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:checksums:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:crt-core:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:dynamodb:2.2.0=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:dynamodb:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath @@ -331,68 +331,68 @@ software.amazon.awssdk:endpoints-spi:2.19.0=payloadTaggingForkedTestCompileClass software.amazon.awssdk:endpoints-spi:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:endpoints-spi:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:endpoints-spi:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:endpoints-spi:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:endpoints-spi:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:eventbridge:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:eventbridge:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath software.amazon.awssdk:eventbridge:2.7.4=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath -software.amazon.awssdk:http-auth-aws-eventstream:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:http-auth-aws-eventstream:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:http-auth-aws:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:http-auth-aws:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:http-auth-aws:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:http-auth-aws:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:http-auth-spi:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:http-auth-spi:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:http-auth-spi:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:http-auth-spi:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:http-auth:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:http-auth:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:http-auth:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:http-auth:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:http-client-spi:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:http-client-spi:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:http-client-spi:2.2.0=compileClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:http-client-spi:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-client-spi:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:http-client-spi:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:http-client-spi:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:http-client-spi:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:identity-spi:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:identity-spi:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:identity-spi:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:identity-spi:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:json-utils:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:json-utils:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:json-utils:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:json-utils:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:json-utils:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:json-utils:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:json-utils:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:kinesis:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:kinesis:2.2.0=testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:kinesis:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:kinesis:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath -software.amazon.awssdk:kinesis:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:kinesis:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:metrics-spi:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:metrics-spi:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:metrics-spi:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:metrics-spi:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:metrics-spi:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:metrics-spi:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:metrics-spi:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.18.40=dsmForkedTestRuntimeClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.19.0=payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.2.0=testRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.20.33=latestDepTestRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.23.8=latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.25.40=latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:netty-nio-client:2.29.23=latestDsmForkedTestRuntimeClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:netty-nio-client:2.29.29=latestDsmForkedTestRuntimeClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:profiles:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:profiles:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:profiles:2.2.0=compileClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:profiles:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:profiles:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:profiles:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:profiles:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:profiles:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:protocol-core:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:protocol-core:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:protocol-core:2.2.0=testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:protocol-core:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:protocol-core:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:protocol-core:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:protocol-core:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:protocol-core:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:rds:2.2.0=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:rds:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:regions:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath @@ -401,9 +401,9 @@ software.amazon.awssdk:regions:2.2.0=compileClasspath,testCompileClasspath,testR software.amazon.awssdk:regions:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:regions:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:regions:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:regions:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath -software.amazon.awssdk:retries-spi:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath -software.amazon.awssdk:retries:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:regions:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:retries-spi:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:retries:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:s3:2.18.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:s3:2.2.0=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:s3:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath @@ -413,12 +413,12 @@ software.amazon.awssdk:sdk-core:2.2.0=compileClasspath,testCompileClasspath,test software.amazon.awssdk:sdk-core:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:sdk-core:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:sdk-core:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:sdk-core:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:sdk-core:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:sns:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:sns:2.2.0=kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:sns:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:sns:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:sns:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:sns:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:sqs:2.18.40=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:sqs:2.2.0=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:sqs:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath @@ -428,18 +428,18 @@ software.amazon.awssdk:third-party-jackson-core:2.19.0=payloadTaggingForkedTestC software.amazon.awssdk:third-party-jackson-core:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:third-party-jackson-core:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:third-party-jackson-core:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:third-party-jackson-core:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:third-party-jackson-core:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:third-party-jackson-dataformat-cbor:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:third-party-jackson-dataformat-cbor:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:third-party-jackson-dataformat-cbor:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath -software.amazon.awssdk:third-party-jackson-dataformat-cbor:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:third-party-jackson-dataformat-cbor:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.awssdk:utils:2.18.40=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath software.amazon.awssdk:utils:2.19.0=payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon.awssdk:utils:2.2.0=compileClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:utils:2.20.33=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:utils:2.23.8=latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath software.amazon.awssdk:utils:2.25.40=latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath -software.amazon.awssdk:utils:2.29.23=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath +software.amazon.awssdk:utils:2.29.29=latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath software.amazon.eventstream:eventstream:1.0.1=dsmForkedTestCompileClasspath,dsmForkedTestRuntimeClasspath,dsmTestCompileClasspath,dsmTestRuntimeClasspath,kinesisDsmForkedTestCompileClasspath,kinesisDsmForkedTestRuntimeClasspath,kinesisDsmTestCompileClasspath,kinesisDsmTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,latestDsmForkedTestCompileClasspath,latestDsmForkedTestRuntimeClasspath,latestDsmTestCompileClasspath,latestDsmTestRuntimeClasspath,latestKinesisDsmForkedTestCompileClasspath,latestKinesisDsmForkedTestRuntimeClasspath,latestKinesisDsmTestCompileClasspath,latestKinesisDsmTestRuntimeClasspath,latestPayloadTaggingForkedTestCompileClasspath,latestPayloadTaggingForkedTestRuntimeClasspath,latestPayloadTaggingTestCompileClasspath,latestPayloadTaggingTestRuntimeClasspath,payloadTaggingForkedTestCompileClasspath,payloadTaggingForkedTestRuntimeClasspath,payloadTaggingTestCompileClasspath,payloadTaggingTestRuntimeClasspath software.amazon:flow:1.7=compileClasspath,testCompileClasspath,testRuntimeClasspath xml-apis:xml-apis:1.4.01=spotbugs diff --git a/dd-java-agent/instrumentation/aws-java-sns-2.0/gradle.lockfile b/dd-java-agent/instrumentation/aws-java-sns-2.0/gradle.lockfile index c5c9949aa4f..a0eeef602d9 100644 --- a/dd-java-agent/instrumentation/aws-java-sns-2.0/gradle.lockfile +++ b/dd-java-agent/instrumentation/aws-java-sns-2.0/gradle.lockfile @@ -186,56 +186,56 @@ org.testng:testng:7.5=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeCl org.webjars:jquery:3.5.1=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath org.xmlresolver:xmlresolver:4.4.3=spotbugs software.amazon.awssdk:annotations:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:annotations:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:annotations:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:apache-client:2.25.40=testRuntimeClasspath -software.amazon.awssdk:apache-client:2.29.23=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:apache-client:2.29.29=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:auth:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:auth:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:auth:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-core:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:aws-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:aws-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:aws-json-protocol:2.25.40=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:aws-query-protocol:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:aws-query-protocol:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:aws-query-protocol:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:checksums-spi:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:checksums-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:checksums-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:checksums:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:checksums:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:checksums:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:endpoints-spi:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:endpoints-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -software.amazon.awssdk:http-auth-aws-eventstream:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:endpoints-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth-aws-eventstream:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-auth-aws:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-auth-aws:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth-aws:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-auth-spi:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-auth-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-auth:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-auth:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-auth:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:http-client-spi:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:http-client-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:http-client-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:identity-spi:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:identity-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:identity-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:json-utils:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:json-utils:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:json-utils:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:metrics-spi:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:metrics-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:metrics-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:netty-nio-client:2.25.40=testRuntimeClasspath -software.amazon.awssdk:netty-nio-client:2.29.23=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:netty-nio-client:2.29.29=latestDepForkedTestRuntimeClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:profiles:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:profiles:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:profiles:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:protocol-core:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:protocol-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:protocol-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:regions:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:regions:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -software.amazon.awssdk:retries-spi:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -software.amazon.awssdk:retries:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:regions:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:retries-spi:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:retries:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:sdk-core:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:sdk-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:sdk-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:sns:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:sns:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:sns:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:sqs:2.25.40=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath software.amazon.awssdk:third-party-jackson-core:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:third-party-jackson-core:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:third-party-jackson-core:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.awssdk:utils:2.25.40=compileClasspath,testCompileClasspath,testRuntimeClasspath -software.amazon.awssdk:utils:2.29.23=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +software.amazon.awssdk:utils:2.29.29=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath software.amazon.eventstream:eventstream:1.0.1=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath xml-apis:xml-apis:1.4.01=spotbugs empty=spotbugsPlugins diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageExtractAdapter.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageExtractAdapter.java index bea9bdd3c54..fe7ba0c5558 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageExtractAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageExtractAdapter.java @@ -2,16 +2,24 @@ import com.amazonaws.services.sqs.model.Message; import com.amazonaws.services.sqs.model.MessageAttributeValue; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import datadog.trace.api.Config; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.messaging.DatadogAttributeParser; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Base64; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class MessageExtractAdapter implements AgentPropagation.ContextVisitor { private static final Logger log = LoggerFactory.getLogger(MessageExtractAdapter.class); - public static final MessageExtractAdapter GETTER = new MessageExtractAdapter(); + private static final ObjectMapper MAPPER = new ObjectMapper(); + public static final boolean SHOULD_EXTRACT_CONTEXT_FROM_BODY = + Config.get().isSqsBodyPropagationEnabled(); @Override public void forEachKey(Message carrier, AgentPropagation.KeyClassifier classifier) { @@ -28,6 +36,31 @@ public void forEachKey(Message carrier, AgentPropagation.KeyClassifier classifie } else if ("Binary".equals(datadog.getDataType())) { DatadogAttributeParser.forEachProperty(classifier, datadog.getBinaryValue()); } + } else if (SHOULD_EXTRACT_CONTEXT_FROM_BODY) { + try { + this.forEachKeyInBody(carrier.getBody(), classifier); + } catch (Throwable e) { + log.debug("Error extracting Datadog context from SQS message body", e); + } + } + } + + public void forEachKeyInBody(String body, AgentPropagation.KeyClassifier classifier) + throws IOException { + // Parse the JSON string into a JsonNode + JsonNode rootNode = MAPPER.readTree(body); + + // Navigate to MessageAttributes._datadog + JsonNode messageAttributes = rootNode.path("MessageAttributes").path("_datadog"); + + // Extract Value and Type + String value = messageAttributes.path("Value").asText(); + String type = messageAttributes.path("Type").asText(); + if ("String".equals(type)) { + DatadogAttributeParser.forEachProperty(classifier, value); + } else if ("Binary".equals(type)) { + ByteBuffer decodedValue = ByteBuffer.wrap(Base64.getDecoder().decode(value)); + DatadogAttributeParser.forEachProperty(classifier, decodedValue); } } diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/test/groovy/SqsClientTest.groovy b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/test/groovy/SqsClientTest.groovy index af4cb4f219a..64fa37fab99 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/test/groovy/SqsClientTest.groovy +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/test/groovy/SqsClientTest.groovy @@ -44,6 +44,7 @@ abstract class SqsClientTest extends VersionedNamingTestBase { // Set a service name that gets sorted early with SORT_BY_NAMES injectSysConfig(GeneralConfig.SERVICE_NAME, "A-service") injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, isDataStreamsEnabled().toString()) + injectSysConfig("trace.sqs.body.propagation.enabled", "true") } @Shared @@ -511,6 +512,22 @@ class SqsClientV0DataStreamsTest extends SqsClientTest { } class SqsClientV1DataStreamsForkedTest extends SqsClientTest { + private static final String MESSAGE_WITH_ATTRIBUTES = "{\n" + + " \"Type\" : \"Notification\",\n" + + " \"MessageId\" : \"cb337e2a-1c06-5629-86f5-21fba14fb492\",\n" + + " \"TopicArn\" : \"arn:aws:sns:us-east-1:223300679234:dsm-dev-sns-topic\",\n" + + " \"Message\" : \"Some message\",\n" + + " \"Timestamp\" : \"2024-12-10T03:52:41.662Z\",\n" + + " \"SignatureVersion\" : \"1\",\n" + + " \"Signature\" : \"ZsEewd5gNR8jLC08TenLDp5rhdBtGIdAzWk7j6fzDyUzb/t56R9SBPrNJtjsPO8Ep8v/iGs/wSFUrnm+Zh3N1duc3alR1bKTAbDlzbEBxaHsGcNwzMz14JF7bKLE+3nPIi0/kT8EuIiRevGqPtCG/NEe9oW2dOyvYZvt+L7GC0AS9L0yJp8Ag7NkgNvYbIqPeKcjj8S7WRiV95Useg0P46e5pn5FXmNKPlpIqYN28jnrTZHWUDTiO5RE7lfFcdH2tBaYSR9F/PwA1Mga5NrTxlZp/yDoOlOUFj5zXAtDDpjNTcR48jAu66Mpi1wom7Si7vc3ZsYzN2Z2ig/aUJLaNA==\",\n" + + " \"SigningCertURL\" : \"https://sns.us-east-1.amazonaws.com/SimpleNotificationService-some-pem.pem\",\n" + + " \"UnsubscribeURL\" : \"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:7270067952343:dsm-dev-sns-topic:0d82adcc-5b42-4035-81c4-22ccd126fc41\",\n" + + " \"MessageAttributes\" : {\n" + + " \"_datadog\" : {\"Type\":\"Binary\",\"Value\":\"eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiI1ODExMzQ0MDA5MDA2NDM1Njk0IiwieC1kYXRhZG9nLXBhcmVudC1pZCI6Ijc3MjQzODMxMjg4OTMyNDAxNDAiLCJ4LWRhdGFkb2ctc2FtcGxpbmctcHJpb3JpdHkiOiIwIiwieC1kYXRhZG9nLXRhZ3MiOiJfZGQucC50aWQ9Njc1N2JiMDkwMDAwMDAwMCIsInRyYWNlcGFyZW50IjoiMDAtNjc1N2JiMDkwMDAwMDAwMDUwYTYwYTk2MWM2YzRkNmUtNmIzMjg1ODdiYWIzYjM0Yy0wMCIsInRyYWNlc3RhdGUiOiJkZD1zOjA7cDo2YjMyODU4N2JhYjNiMzRjO3QudGlkOjY3NTdiYjA5MDAwMDAwMDAiLCJkZC1wYXRod2F5LWN0eC1iYXNlNjQiOiJkdzdKcjU0VERkcjA5cFRyOVdUMDlwVHI5V1E9In0=\"}\n" + + " }\n" + + "}" + + @Override String expectedOperation(String awsService, String awsOperation) { if (awsService == "SQS") { @@ -537,6 +554,97 @@ class SqsClientV1DataStreamsForkedTest extends SqsClientTest { int version() { 1 } + + def "Data streams context extracted from message body"() { + setup: + def client = AmazonSQSClientBuilder.standard() + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build() + def queueUrl = client.createQueue('somequeue').queueUrl + TEST_WRITER.clear() + + when: + injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, "false") + client.sendMessage(queueUrl, MESSAGE_WITH_ATTRIBUTES) + injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, "true") + def messages = client.receiveMessage(queueUrl).messages + messages.forEach {/* consume to create message spans */ } + + TEST_DATA_STREAMS_WRITER.waitForGroups(1) + + then: + StatsGroup first = TEST_DATA_STREAMS_WRITER.groups.find { it.parentHash == -2734507826469073289 } + + verifyAll(first) { + edgeTags == ["direction:in", "topic:somequeue", "type:sqs"] + edgeTags.size() == 3 + } + + cleanup: + client.shutdown() + } + + def "Data streams context not extracted from message body when message attributes are not present"() { + setup: + def client = AmazonSQSClientBuilder.standard() + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build() + def queueUrl = client.createQueue('somequeue').queueUrl + TEST_WRITER.clear() + + when: + injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, "false") + client.sendMessage(queueUrl, '{"Message": "sometext"}') + injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, "true") + def messages = client.receiveMessage(queueUrl).messages + messages.forEach {} + + TEST_DATA_STREAMS_WRITER.waitForGroups(1) + + then: + StatsGroup first = TEST_DATA_STREAMS_WRITER.groups.find { it.parentHash == 0 } + + verifyAll(first) { + edgeTags == ["direction:in", "topic:somequeue", "type:sqs"] + edgeTags.size() == 3 + } + + cleanup: + client.shutdown() + } + + + def "Data streams context not extracted from message body when message is not a Json"() { + setup: + def client = AmazonSQSClientBuilder.standard() + .withEndpointConfiguration(endpoint) + .withCredentials(credentialsProvider) + .build() + def queueUrl = client.createQueue('somequeue').queueUrl + TEST_WRITER.clear() + + when: + injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, "false") + client.sendMessage(queueUrl, '{"Message": "not a json"') + injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, "true") + def messages = client.receiveMessage(queueUrl).messages + messages.forEach {} + + TEST_DATA_STREAMS_WRITER.waitForGroups(1) + + then: + StatsGroup first = TEST_DATA_STREAMS_WRITER.groups.find { it.parentHash == 0 } + + verifyAll(first) { + edgeTags == ["direction:in", "topic:somequeue", "type:sqs"] + edgeTags.size() == 3 + } + + cleanup: + client.shutdown() + } } diff --git a/dd-java-agent/instrumentation/couchbase/couchbase-3.2/gradle.lockfile b/dd-java-agent/instrumentation/couchbase/couchbase-3.2/gradle.lockfile index 2c31ef6fa5b..bb18e5ef240 100644 --- a/dd-java-agent/instrumentation/couchbase/couchbase-3.2/gradle.lockfile +++ b/dd-java-agent/instrumentation/couchbase/couchbase-3.2/gradle.lockfile @@ -8,9 +8,9 @@ ch.qos.logback:logback-core:1.2.3=latestDepTestCompileClasspath,latestDepTestRun com.beust:jcommander:1.78=latestDepTestRuntimeClasspath,testRuntimeClasspath com.blogspot.mydailyjava:weak-lock-free:0.17=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.couchbase.client:core-io:2.2.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.couchbase.client:core-io:3.7.5=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +com.couchbase.client:core-io:3.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath com.couchbase.client:java-client:3.2.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.couchbase.client:java-client:3.7.5=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +com.couchbase.client:java-client:3.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath com.datadoghq.okhttp3:okhttp:3.12.15=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.datadoghq.okio:okio:1.17.6=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.datadoghq:dd-javac-plugin-client:0.2.2=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/google-http-client/gradle.lockfile b/dd-java-agent/instrumentation/google-http-client/gradle.lockfile index 50cfa977288..0a74240842f 100644 --- a/dd-java-agent/instrumentation/google-http-client/gradle.lockfile +++ b/dd-java-agent/instrumentation/google-http-client/gradle.lockfile @@ -31,14 +31,14 @@ com.google.auto:auto-common:0.10=annotationProcessor,latestDepTestAnnotationProc com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,compileClasspath,latestDepTestAnnotationProcessor,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,spotbugs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.9.1=spotbugs com.google.errorprone:error_prone_annotations:2.2.0=annotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.30.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +com.google.errorprone:error_prone_annotations:2.36.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath com.google.guava:failureaccess:1.0.1=annotationProcessor,latestDepTestAnnotationProcessor,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testAnnotationProcessor com.google.guava:guava:20.0=testCompileClasspath,testRuntimeClasspath com.google.guava:guava:27.0.1-jre=annotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor com.google.guava:guava:30.1.1-android=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,latestDepTestAnnotationProcessor,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testAnnotationProcessor com.google.http-client:google-http-client:1.19.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.google.http-client:google-http-client:1.45.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +com.google.http-client:google-http-client:1.45.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor com.google.j2objc:j2objc-annotations:3.0.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath com.google.re2j:re2j:1.7=instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath @@ -55,8 +55,8 @@ commons-io:commons-io:2.11.0=latestDepTestCompileClasspath,latestDepTestRuntimeC commons-logging:commons-logging:1.1.1=compileClasspath,testCompileClasspath,testRuntimeClasspath de.thetaphi:forbiddenapis:3.1=compileClasspath info.picocli:picocli:4.6.3=latestDepTestRuntimeClasspath,testRuntimeClasspath -io.grpc:grpc-api:1.66.0=latestDepTestRuntimeClasspath -io.grpc:grpc-context:1.66.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.grpc:grpc-api:1.68.2=latestDepTestRuntimeClasspath +io.grpc:grpc-context:1.68.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.opencensus:opencensus-api:0.31.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.opencensus:opencensus-contrib-http-util:0.31.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.sqreen:libsqreen:11.2.0=latestDepTestRuntimeClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java index fba42b66d02..d32dd5cad93 100644 --- a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java +++ b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java @@ -81,6 +81,7 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ + "datadog.trace.api.MethodFilterConfigParser:build_time," + "datadog.trace.api.WithGlobalTracer:build_time," + "datadog.trace.api.PropagationStyle:build_time," + + "datadog.trace.api.TracePropagationStyle:build_time," + "datadog.trace.api.telemetry.OtelEnvMetricCollector:build_time," + "datadog.trace.api.profiling.ProfilingEnablement:build_time," + "datadog.trace.bootstrap.config.provider.ConfigConverter:build_time," diff --git a/dd-java-agent/instrumentation/grizzly-client-1.9/gradle.lockfile b/dd-java-agent/instrumentation/grizzly-client-1.9/gradle.lockfile index 603ac621a97..0d7c78346dd 100644 --- a/dd-java-agent/instrumentation/grizzly-client-1.9/gradle.lockfile +++ b/dd-java-agent/instrumentation/grizzly-client-1.9/gradle.lockfile @@ -138,7 +138,7 @@ org.junit:junit-bom:5.9.1=spotbugs org.junit:junit-bom:5.9.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.mule.glassfish.grizzly:connection-pool:2.3.36-MULE-026=muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath org.mule.glassfish.grizzly:grizzly-framework:2.3.36-MULE-008=muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath -org.mule.glassfish.grizzly:grizzly-http-client:1.14-MULE-027=muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath +org.mule.glassfish.grizzly:grizzly-http-client:1.14-MULE-028=muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath org.mule.glassfish.grizzly:grizzly-http:2.3.36-MULE-008=muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath org.mule.glassfish.grizzly:grizzly-websockets:2.3.36-MULE-026=muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath org.objenesis:objenesis:3.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -156,8 +156,9 @@ org.ow2.asm:asm:9.4=spotbugs org.slf4j:jcl-over-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jul-to-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:log4j-over-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:1.7.30=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,muleLatestDepTestCompileClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath -org.slf4j:slf4j-api:1.7.32=latestDepTestRuntimeClasspath,muleLatestDepTestRuntimeClasspath,testRuntimeClasspath +org.slf4j:slf4j-api:1.7.30=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath +org.slf4j:slf4j-api:1.7.32=latestDepTestRuntimeClasspath,testRuntimeClasspath +org.slf4j:slf4j-api:1.7.36=muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath org.slf4j:slf4j-api:2.0.0=spotbugs,spotbugsSlf4j org.slf4j:slf4j-simple:2.0.0=spotbugsSlf4j org.spockframework:spock-core:2.2-groovy-3.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muleLatestDepTestCompileClasspath,muleLatestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/grpc-1.5/gradle.lockfile b/dd-java-agent/instrumentation/grpc-1.5/gradle.lockfile index f38e07402f7..f83390f221b 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/gradle.lockfile +++ b/dd-java-agent/instrumentation/grpc-1.5/gradle.lockfile @@ -185,23 +185,18 @@ org.junit.platform:junit-platform-suite-api:1.9.2=latestDepTestCompileProtoPath, org.junit.platform:junit-platform-suite-commons:1.9.2=latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileProtoPath,testRuntimeClasspath org.junit:junit-bom:5.9.1=spotbugs org.junit:junit-bom:5.9.2=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath -org.mockito:mockito-core:4.4.0=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath -org.mockito:mockito-junit-jupiter:4.4.0=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath org.objenesis:objenesis:3.3=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath org.opentest4j:opentest4j:1.2.0=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath org.ow2.asm:asm-analysis:9.2=compileProtoPath,instrumentPluginClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileProtoPath,testRuntimeClasspath org.ow2.asm:asm-analysis:9.4=spotbugs -org.ow2.asm:asm-commons:9.2=compileProtoPath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath +org.ow2.asm:asm-commons:9.2=compileProtoPath,instrumentPluginClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileProtoPath,testRuntimeClasspath org.ow2.asm:asm-commons:9.4=spotbugs -org.ow2.asm:asm-commons:9.7=latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileProtoPath,testRuntimeClasspath -org.ow2.asm:asm-tree:9.2=compileProtoPath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath +org.ow2.asm:asm-tree:9.2=compileProtoPath,instrumentPluginClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileProtoPath,testRuntimeClasspath org.ow2.asm:asm-tree:9.4=spotbugs -org.ow2.asm:asm-tree:9.7=latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileProtoPath,testRuntimeClasspath org.ow2.asm:asm-util:9.2=compileProtoPath,instrumentPluginClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileProtoPath,testRuntimeClasspath org.ow2.asm:asm-util:9.4=spotbugs -org.ow2.asm:asm:9.2=compileProtoPath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath +org.ow2.asm:asm:9.2=compileProtoPath,instrumentPluginClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileProtoPath,testRuntimeClasspath org.ow2.asm:asm:9.4=spotbugs -org.ow2.asm:asm:9.7=latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileProtoPath,testRuntimeClasspath org.slf4j:jcl-over-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath org.slf4j:jul-to-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath org.slf4j:log4j-over-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestCompileProtoPath,latestDepTestRuntimeClasspath,testCompileClasspath,testCompileProtoPath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/iast-instrumenter/src/main/resources/datadog/trace/instrumentation/iastinstrumenter/iast_exclusion.trie b/dd-java-agent/instrumentation/iast-instrumenter/src/main/resources/datadog/trace/instrumentation/iastinstrumenter/iast_exclusion.trie index 6490aac2f0a..964fe367963 100644 --- a/dd-java-agent/instrumentation/iast-instrumenter/src/main/resources/datadog/trace/instrumentation/iastinstrumenter/iast_exclusion.trie +++ b/dd-java-agent/instrumentation/iast-instrumenter/src/main/resources/datadog/trace/instrumentation/iastinstrumenter/iast_exclusion.trie @@ -198,6 +198,7 @@ 1 org.apache.* #apache httpClient needs URI propagation 0 org.apache.http.client.methods.* +0 org.apache.hc.client5.http.classic.methods.* # apache compiled jsps 0 org.apache.jsp.* 1 org.apiguardian.* diff --git a/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/SpanFinishingCallback.java b/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/SpanFinishingCallback.java index 469ed829492..a25c2f658f7 100644 --- a/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/SpanFinishingCallback.java +++ b/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/SpanFinishingCallback.java @@ -21,8 +21,6 @@ public SpanFinishingCallback(final AgentSpan span) { public void apply(IgniteFuture igniteFuture) { IgniteCacheDecorator.DECORATE.beforeFinish(span); - System.err.println("Called callback: " + igniteFuture); - try { Object result = igniteFuture.get(); IgniteCacheDecorator.DECORATE.beforeFinish(span); diff --git a/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jakarta/jms/MDBMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jakarta/jms/MDBMessageConsumerInstrumentation.java index 1217e383aad..b9b651110bf 100644 --- a/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jakarta/jms/MDBMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jakarta/jms/MDBMessageConsumerInstrumentation.java @@ -19,11 +19,13 @@ import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import jakarta.jms.Destination; import jakarta.jms.JMSException; import jakarta.jms.Message; +import jakarta.jms.MessageListener; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -72,6 +74,9 @@ public void methodAdvice(MethodTransformer transformer) { public static class MDBAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static AgentScope methodEnter(@Advice.Argument(0) final Message message) { + if (CallDepthThreadLocalMap.incrementCallDepth(MessageListener.class) > 0) { + return null; + } AgentSpan.Context propagatedContext = propagate().extract(message, GETTER); AgentSpan span = startSpan(JMS_CONSUME, propagatedContext); CONSUMER_DECORATE.afterStart(span); @@ -93,6 +98,7 @@ public static AgentScope methodEnter(@Advice.Argument(0) final Message message) public static void methodExit( @Advice.Enter AgentScope scope, @Advice.Thrown final Throwable throwable) { if (null != scope) { + CallDepthThreadLocalMap.reset(MessageListener.class); CONSUMER_DECORATE.onError(scope, throwable); scope.close(); scope.span().finish(); diff --git a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/StringBuilderCallSite.java b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/StringBuilderCallSite.java index 4fa3ff9e017..b56d4f50424 100644 --- a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/StringBuilderCallSite.java +++ b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/StringBuilderCallSite.java @@ -38,6 +38,7 @@ public static CharSequence afterInit( @CallSite.After("java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String)") @CallSite.After("java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.CharSequence)") + @CallSite.After("java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.StringBuffer)") @CallSite.After("java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String)") @CallSite.After("java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.CharSequence)") @Nonnull @@ -56,6 +57,26 @@ public static CharSequence afterAppend( return result; } + @CallSite.After( + "java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.CharSequence, int, int)") + @Nonnull + public static CharSequence afterAppendWithSubstring( + @CallSite.This @Nonnull final CharSequence self, + @CallSite.Argument(0) @Nullable final CharSequence param, + @CallSite.Argument(1) final int start, + @CallSite.Argument(2) final int end, + @CallSite.Return @Nonnull final CharSequence result) { + final StringModule module = InstrumentationBridge.STRING; + if (module != null) { + try { + module.onStringBuilderAppend(self, param, start, end); + } catch (final Throwable e) { + module.onUnexpectedException("afterAppendWithSubstring threw", e); + } + } + return result; + } + @CallSite.Around("java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.Object)") @CallSite.Around("java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.Object)") @Nonnull @@ -141,6 +162,7 @@ public static String afterSubstring( } @CallSite.After("java.lang.CharSequence java.lang.StringBuilder.subSequence(int, int)") + @CallSite.After("java.lang.CharSequence java.lang.StringBuffer.subSequence(int, int)") public static CharSequence afterSubSequence( @CallSite.This final CharSequence self, @CallSite.Argument final int beginIndex, diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy index 4d5de890f0a..c989aa9f77d 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy @@ -90,6 +90,24 @@ class StringBuilderCallSiteTest extends AgentTestRunner { new TestStringBufferSuite() | new StringBuffer('Hello ') } + void 'test string builder append call site with start and end'() { + setup: + final iastModule = Mock(StringModule) + InstrumentationBridge.registerIastModule(iastModule) + + when: + suite.append(target, param, start, end) + + then: + target.toString() == expected + 1 * iastModule.onStringBuilderAppend(target, param, start, end) + 0 * _ + + where: + suite | target | param | start | end | expected + new TestStringBuilderSuite() | new StringBuilder('Hello ') | 'World!' | 0 | 5 | 'Hello World' + } + void 'test string builder toString call site'() { setup: final iastModule = Mock(StringModule) @@ -228,6 +246,7 @@ class StringBuilderCallSiteTest extends AgentTestRunner { where: type | suite | param | beginIndex | endIndex | expected "builder" | new TestStringBuilderSuite() | sb('012345') | 1 | 5 | '1234' + "buffer" | new TestStringBufferSuite() | sbf('012345') | 1 | 5 | '1234' } private static class BrokenToString { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestAbstractStringBuilderSuite.java b/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestAbstractStringBuilderSuite.java index 9a3dbaab202..f65e99e97fa 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestAbstractStringBuilderSuite.java +++ b/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestAbstractStringBuilderSuite.java @@ -10,6 +10,8 @@ public interface TestAbstractStringBuilderSuite { void append(final E target, final CharSequence param); + void append(final E target, final CharSequence param, int start, int end); + void append(final E target, final Object param); String substring(final E self, final int beginIndex, final int endIndex); diff --git a/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBufferSuite.java b/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBufferSuite.java index 7f9f488870a..736e1387bd1 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBufferSuite.java +++ b/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBufferSuite.java @@ -37,6 +37,13 @@ public void append(final StringBuffer buffer, final CharSequence param) { LOGGER.debug("After string buffer append {}", result); } + @Override + public void append(final StringBuffer builder, final CharSequence param, int start, int end) { + LOGGER.debug("Before string buffer append {} with start {} and end {}", param, start, end); + final StringBuffer result = builder.append(param, start, end); + LOGGER.debug("After string buffer append {}", result); + } + @Override public void append(final StringBuffer buffer, final Object param) { LOGGER.debug("Before string buffer append {}", param); diff --git a/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBuilderSuite.java b/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBuilderSuite.java index a613773a3a4..188c7b0c09c 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBuilderSuite.java +++ b/dd-java-agent/instrumentation/java-lang/src/test/java/foo/bar/TestStringBuilderSuite.java @@ -38,6 +38,13 @@ public void append(final StringBuilder builder, final CharSequence param) { LOGGER.debug("After string builder append {}", result); } + @Override + public void append(final StringBuilder builder, final CharSequence param, int start, int end) { + LOGGER.debug("Before string builder append {} with start {} and end {}", param, start, end); + final StringBuilder result = builder.append(param, start, end); + LOGGER.debug("After string builder append {}", result); + } + @Override public void append(final StringBuilder builder, final Object param) { LOGGER.debug("Before string builder append {}", param); diff --git a/dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleInstrumentation.java b/dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleInstrumentation.java index 825e212129e..235675a90f6 100644 --- a/dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleInstrumentation.java +++ b/dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleInstrumentation.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.jbossmodules; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -8,6 +9,7 @@ import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.bootstrap.AgentClassLoading; import java.io.IOException; import java.io.InputStream; @@ -33,7 +35,8 @@ public String[] helperClassNames() { return new String[] { "org.jboss.modules.ModuleLinkageHelper", "org.jboss.modules.ModuleLinkageHelper$1", - "org.jboss.modules.ModuleLinkageHelper$2" + "org.jboss.modules.ModuleLinkageHelper$2", + packageName + ".ModuleNameHelper", }; } @@ -60,6 +63,7 @@ public void methodAdvice(MethodTransformer transformer) { .and(takesArgument(0, String.class)) .and(takesArgument(1, boolean.class)))), ModuleInstrumentation.class.getName() + "$WidenLoadClassAdvice"); + transformer.applyAdvice(isConstructor(), getClass().getName() + "$CaptureModuleNameAdvice"); } /** @@ -154,4 +158,14 @@ public static void onExit( } } } + + public static class CaptureModuleNameAdvice { + @Advice.OnMethodExit(suppress = Throwable.class) + public static void afterConstruct(@Advice.This final Module module) { + final String name = ModuleNameHelper.extractDeploymentName(module.getClassLoader()); + if (name != null && !name.isEmpty()) { + ClassloaderServiceNames.addServiceName(module.getClassLoader(), name); + } + } + } } diff --git a/dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleNameHelper.java b/dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleNameHelper.java new file mode 100644 index 00000000000..d99f2ded925 --- /dev/null +++ b/dd-java-agent/instrumentation/jboss-modules/src/main/java/datadog/trace/instrumentation/jbossmodules/ModuleNameHelper.java @@ -0,0 +1,22 @@ +package datadog.trace.instrumentation.jbossmodules; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.annotation.Nonnull; +import org.jboss.modules.ModuleClassLoader; + +public class ModuleNameHelper { + private ModuleNameHelper() {} + + private static final Pattern SUBDEPLOYMENT_MATCH = + Pattern.compile("deployment(?>.+\\.ear)?\\.(.+)\\.[j|w]ar"); + + public static String extractDeploymentName(@Nonnull final ModuleClassLoader classLoader) { + final Matcher matcher = + SUBDEPLOYMENT_MATCH.matcher(classLoader.getModule().getIdentifier().getName()); + if (matcher.matches()) { + return matcher.group(1); + } + return null; + } +} diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/AbstractPreparedStatementInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/AbstractPreparedStatementInstrumentation.java index 733d40c8793..681b0800590 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/AbstractPreparedStatementInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/AbstractPreparedStatementInstrumentation.java @@ -5,6 +5,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.DBM_TRACE_INJECTED; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DATABASE_QUERY; +import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DBM_TRACE_PREPARED_STATEMENTS; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.INJECT_COMMENT; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.logMissingQueryInfo; @@ -80,12 +81,19 @@ public static AgentScope onEnter(@Advice.This final Statement statement) { connection, InstrumentationContext.get(Connection.class, DBInfo.class)); final boolean injectTraceContext = DECORATE.shouldInjectTraceContext(dbInfo); - if (INJECT_COMMENT && injectTraceContext && DECORATE.isSqlServer(dbInfo)) { - // The span ID is pre-determined so that we can reference it when setting the context - final long spanID = DECORATE.setContextInfo(connection, dbInfo); - // we then force that pre-determined span ID for the span covering the actual query - span = AgentTracer.get().buildSpan(DATABASE_QUERY).withSpanId(spanID).start(); - span.setTag(DBM_TRACE_INJECTED, true); + if (INJECT_COMMENT && injectTraceContext) { + if (DECORATE.isSqlServer(dbInfo)) { + // The span ID is pre-determined so that we can reference it when setting the context + final long spanID = DECORATE.setContextInfo(connection, dbInfo); + // we then force that pre-determined span ID for the span covering the actual query + span = AgentTracer.get().buildSpan(DATABASE_QUERY).withSpanId(spanID).start(); + span.setTag(DBM_TRACE_INJECTED, true); + } else if (DECORATE.isPostgres(dbInfo) && DBM_TRACE_PREPARED_STATEMENTS) { + span = startSpan(DATABASE_QUERY); + DECORATE.setApplicationName(span, connection); + } else { + span = startSpan(DATABASE_QUERY); + } } else { span = startSpan(DATABASE_QUERY); } diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java index e44334452ee..ea2b18e48f3 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java @@ -1,6 +1,8 @@ package datadog.trace.instrumentation.jdbc; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; +import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.DBM_TRACE_INJECTED; +import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.INSTRUMENTATION_TIME_MS; import static datadog.trace.bootstrap.instrumentation.api.Tags.*; import datadog.trace.api.Config; @@ -53,6 +55,8 @@ public class JDBCDecorator extends DatabaseClientDecorator { || DBM_PROPAGATION_MODE.equals(DBM_PROPAGATION_MODE_STATIC); private static final boolean INJECT_TRACE_CONTEXT = DBM_PROPAGATION_MODE.equals(DBM_PROPAGATION_MODE_FULL); + public static final boolean DBM_TRACE_PREPARED_STATEMENTS = + Config.get().isDBMTracePreparedStatements(); private volatile boolean warnedAboutDBMPropagationMode = false; // to log a warning only once @@ -248,6 +252,10 @@ public String traceParent(AgentSpan span, int samplingPriority) { return sb.toString(); } + public boolean isPostgres(final DBInfo dbInfo) { + return dbInfo.getType().startsWith("postgres"); + } + public boolean isSqlServer(final DBInfo dbInfo) { return "sqlserver".equals(dbInfo.getType()); } @@ -312,6 +320,44 @@ public long setContextInfo(Connection connection, DBInfo dbInfo) { return spanID; } + /** + * Executes `SET application_name` statement on the Postgres DB to set the trace parent in + * `pg_stat_activity.application_name`. This is used for prepared statements where it isn't + * possible to propagate trace parent with the comment. Downside: makes an additional round trip + * to the database. + * + * @param span The span of the instrumented statement + * @param connection The same connection as the one that will be used for the actual statement + */ + public void setApplicationName(AgentSpan span, Connection connection) { + final long startTime = System.currentTimeMillis(); + try { + + Integer priority = span.forceSamplingDecision(); + if (priority == null) { + return; + } + final String traceParent = DECORATE.traceParent(span, priority); + final String traceContext = "_DD_" + traceParent; + + connection.setClientInfo("ApplicationName", traceContext); + } catch (Throwable e) { + if (log.isDebugEnabled()) { + log.debug( + "Failed to set extra DBM data in application_name for trace {}. " + + "To disable this behavior, set trace_prepared_statements to 'false'. " + + "See https://docs.datadoghq.com/database_monitoring/connect_dbm_and_apm/ for more info.{}", + span.getTraceId().toHexString(), + e); + } + DECORATE.onError(span, e); + } finally { + span.setTag(DBM_TRACE_INJECTED, true); + final long elapsed = System.currentTimeMillis() - startTime; + span.setTag(INSTRUMENTATION_TIME_MS, elapsed); + } + } + @Override protected void postProcessServiceAndOperationName( AgentSpan span, DatabaseClientDecorator.NamingEntry namingEntry) { diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/RemoteJDBCInstrumentationTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/RemoteJDBCInstrumentationTest.groovy index a896ab2f33f..3f6c4ac2ecc 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/RemoteJDBCInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/RemoteJDBCInstrumentationTest.groovy @@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.api.config.TraceInstrumentationConfig.DB_CLIENT_HOST_SPLIT_BY_INSTANCE +import static datadog.trace.api.config.TraceInstrumentationConfig.DB_DBM_TRACE_PREPARED_STATEMENTS // workaround for SSLHandShakeException on J9 only with Hikari/MySQL @Requires({ !System.getProperty("java.vendor").contains("IBM") }) @@ -347,9 +348,9 @@ abstract class RemoteJDBCInstrumentationTest extends VersionedNamingTestBase { resultSet.next() resultSet.getInt(1) == 3 def addDbmTag = dbmTraceInjected() - if (driver == POSTGRESQL || driver == MYSQL || !addDbmTag) { + if (driver == SQLSERVER && addDbmTag){ assertTraces(1) { - trace(2) { + trace(3) { basicSpan(it, "parent") span { operationName this.operation(this.getDbType(driver)) @@ -364,72 +365,76 @@ abstract class RemoteJDBCInstrumentationTest extends VersionedNamingTestBase { "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() - // only set when there is an out of proc instance (postgresql, mysql) "$Tags.PEER_HOSTNAME" String - // currently there is a bug in the instrumentation with - // postgresql and mysql if the connection event is missed - // since Connection.getClientInfo will not provide the username "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } "$Tags.DB_OPERATION" operation if (usingHikari) { "$Tags.DB_POOL_NAME" String } + if (addDbmTag) { + "$InstrumentationTags.DBM_TRACE_INJECTED" true + } peerServiceFrom(Tags.DB_INSTANCE) defaultTags() } } - } - } - } else { - assertTraces(1) { - trace(3) { - basicSpan(it, "parent") span { - operationName this.operation(this.getDbType(driver)) serviceName service(driver) - resourceName obfuscatedQuery + operationName this.operation(this.getDbType(driver)) + resourceName "set context_info ?" spanType DDSpanTypes.SQL childOf span(0) errored false measured true tags { - "$Tags.COMPONENT" "java-jdbc-prepared_statement" + "$Tags.COMPONENT" "java-jdbc-statement" "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() "$Tags.PEER_HOSTNAME" String "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } - "$Tags.DB_OPERATION" operation + "$Tags.DB_OPERATION" "set" if (usingHikari) { "$Tags.DB_POOL_NAME" String } - if (addDbmTag) { - "$InstrumentationTags.DBM_TRACE_INJECTED" true - } + "dd.instrumentation" true peerServiceFrom(Tags.DB_INSTANCE) defaultTags() } } + } + } + } else { + assertTraces(1) { + trace(2) { + basicSpan(it, "parent") span { - serviceName service(driver) operationName this.operation(this.getDbType(driver)) - resourceName "set context_info ?" + serviceName service(driver) + resourceName obfuscatedQuery spanType DDSpanTypes.SQL childOf span(0) errored false measured true tags { - "$Tags.COMPONENT" "java-jdbc-statement" + "$Tags.COMPONENT" "java-jdbc-prepared_statement" "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() + // only set when there is an out of proc instance (postgresql, mysql) "$Tags.PEER_HOSTNAME" String + // currently there is a bug in the instrumentation with + // postgresql and mysql if the connection event is missed + // since Connection.getClientInfo will not provide the username "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } - "$Tags.DB_OPERATION" "set" + "$Tags.DB_OPERATION" operation if (usingHikari) { "$Tags.DB_POOL_NAME" String } - "dd.instrumentation" true + if (this.dbmTracePreparedStatements(driver)){ + "$InstrumentationTags.DBM_TRACE_INJECTED" true + "$InstrumentationTags.INSTRUMENTATION_TIME_MS" Long + } peerServiceFrom(Tags.DB_INSTANCE) defaultTags() } @@ -470,9 +475,11 @@ abstract class RemoteJDBCInstrumentationTest extends VersionedNamingTestBase { then: resultSet.next() resultSet.getInt(1) == 3 - if (driver == POSTGRESQL || driver == MYSQL || !dbmTraceInjected()) { + + def addDbmTag = dbmTraceInjected() + if (driver == SQLSERVER && addDbmTag){ assertTraces(1) { - trace(2) { + trace(3) { basicSpan(it, "parent") span { operationName this.operation(this.getDbType(driver)) @@ -497,64 +504,68 @@ abstract class RemoteJDBCInstrumentationTest extends VersionedNamingTestBase { if (conPoolType == "hikari") { "$Tags.DB_POOL_NAME" String } + "$InstrumentationTags.DBM_TRACE_INJECTED" true peerServiceFrom(Tags.DB_INSTANCE) defaultTags() } } - } - } - } else { - assertTraces(1) { - trace(3) { - basicSpan(it, "parent") span { - operationName this.operation(this.getDbType(driver)) serviceName service(driver) - resourceName obfuscatedQuery + operationName this.operation(this.getDbType(driver)) + resourceName "set context_info ?" spanType DDSpanTypes.SQL childOf span(0) errored false measured true tags { - "$Tags.COMPONENT" "java-jdbc-prepared_statement" + "$Tags.COMPONENT" "java-jdbc-statement" "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() - // only set when there is an out of proc instance (postgresql, mysql) "$Tags.PEER_HOSTNAME" String - // currently there is a bug in the instrumentation with - // postgresql and mysql if the connection event is missed - // since Connection.getClientInfo will not provide the username "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } - "$Tags.DB_OPERATION" operation + "$Tags.DB_OPERATION" "set" if (conPoolType == "hikari") { "$Tags.DB_POOL_NAME" String } - "$InstrumentationTags.DBM_TRACE_INJECTED" true + "dd.instrumentation" true peerServiceFrom(Tags.DB_INSTANCE) defaultTags() } } + } + } + } else { + assertTraces(1) { + trace(2) { + basicSpan(it, "parent") span { - serviceName service(driver) operationName this.operation(this.getDbType(driver)) - resourceName "set context_info ?" + serviceName service(driver) + resourceName obfuscatedQuery spanType DDSpanTypes.SQL childOf span(0) errored false measured true tags { - "$Tags.COMPONENT" "java-jdbc-statement" + "$Tags.COMPONENT" "java-jdbc-prepared_statement" "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() + // only set when there is an out of proc instance (postgresql, mysql) "$Tags.PEER_HOSTNAME" String + // currently there is a bug in the instrumentation with + // postgresql and mysql if the connection event is missed + // since Connection.getClientInfo will not provide the username "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } - "$Tags.DB_OPERATION" "set" + "$Tags.DB_OPERATION" operation if (conPoolType == "hikari") { "$Tags.DB_POOL_NAME" String } - "dd.instrumentation" true + if (this.dbmTracePreparedStatements(driver)){ + "$InstrumentationTags.DBM_TRACE_INJECTED" true + "$InstrumentationTags.INSTRUMENTATION_TIME_MS" Long + } peerServiceFrom(Tags.DB_INSTANCE) defaultTags() } @@ -595,9 +606,10 @@ abstract class RemoteJDBCInstrumentationTest extends VersionedNamingTestBase { then: resultSet.next() resultSet.getInt(1) == 3 - if (driver == POSTGRESQL || driver == MYSQL || !dbmTraceInjected()) { + def addDbmTag = dbmTraceInjected() + if (driver == SQLSERVER && addDbmTag){ assertTraces(1) { - trace(2) { + trace(3) { basicSpan(it, "parent") span { operationName this.operation(this.getDbType(driver)) @@ -612,69 +624,73 @@ abstract class RemoteJDBCInstrumentationTest extends VersionedNamingTestBase { "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() - // only set when there is an out of proc instance (postgresql, mysql) "$Tags.PEER_HOSTNAME" String - // currently there is a bug in the instrumentation with - // postgresql and mysql if the connection event is missed - // since Connection.getClientInfo will not provide the username "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } "${Tags.DB_OPERATION}" operation if (conPoolType == "hikari") { "$Tags.DB_POOL_NAME" String } + "$InstrumentationTags.DBM_TRACE_INJECTED" true defaultTags() } } - } - } - } else { - assertTraces(1) { - trace(3) { - basicSpan(it, "parent") span { - operationName this.operation(this.getDbType(driver)) serviceName service(driver) - resourceName obfuscatedQuery + operationName this.operation(this.getDbType(driver)) + resourceName "set context_info ?" spanType DDSpanTypes.SQL childOf span(0) errored false measured true tags { - "$Tags.COMPONENT" "java-jdbc-prepared_statement" + "$Tags.COMPONENT" "java-jdbc-statement" "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() "$Tags.PEER_HOSTNAME" String "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } - "${Tags.DB_OPERATION}" operation + "$Tags.DB_OPERATION" "set" + "dd.instrumentation" true if (conPoolType == "hikari") { "$Tags.DB_POOL_NAME" String } - "$InstrumentationTags.DBM_TRACE_INJECTED" true + peerServiceFrom(Tags.DB_INSTANCE) defaultTags() } } + } + } + } else { + assertTraces(1) { + trace(2) { + basicSpan(it, "parent") span { - serviceName service(driver) operationName this.operation(this.getDbType(driver)) - resourceName "set context_info ?" + serviceName service(driver) + resourceName obfuscatedQuery spanType DDSpanTypes.SQL childOf span(0) errored false measured true tags { - "$Tags.COMPONENT" "java-jdbc-statement" + "$Tags.COMPONENT" "java-jdbc-prepared_statement" "$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT "$Tags.DB_TYPE" this.getDbType(driver) "$Tags.DB_INSTANCE" dbName.get(driver).toLowerCase() + // only set when there is an out of proc instance (postgresql, mysql) "$Tags.PEER_HOSTNAME" String + // currently there is a bug in the instrumentation with + // postgresql and mysql if the connection event is missed + // since Connection.getClientInfo will not provide the username "$Tags.DB_USER" { it == null || it == jdbcUserNames.get(driver) } - "$Tags.DB_OPERATION" "set" - "dd.instrumentation" true + "${Tags.DB_OPERATION}" operation if (conPoolType == "hikari") { "$Tags.DB_POOL_NAME" String } - peerServiceFrom(Tags.DB_INSTANCE) + if (this.dbmTracePreparedStatements(driver)){ + "$InstrumentationTags.DBM_TRACE_INJECTED" true + "$InstrumentationTags.INSTRUMENTATION_TIME_MS" Long + } defaultTags() } } @@ -979,6 +995,10 @@ abstract class RemoteJDBCInstrumentationTest extends VersionedNamingTestBase { protected abstract String operation(String dbType) protected abstract boolean dbmTraceInjected() + + protected boolean dbmTracePreparedStatements(String dbType){ + return false + } } class RemoteJDBCInstrumentationV0Test extends RemoteJDBCInstrumentationTest { @@ -1067,3 +1087,44 @@ class RemoteDBMTraceInjectedForkedTest extends RemoteJDBCInstrumentationTest { return databaseNaming.normalizedName(dbType) } } + +class RemoteDBMTraceInjectedForkedTestTracePreparedStatements extends RemoteJDBCInstrumentationTest { + + @Override + void configurePreAgent() { + super.configurePreAgent() + injectSysConfig("dd.dbm.propagation.mode", "full") + injectSysConfig(DB_DBM_TRACE_PREPARED_STATEMENTS, "true") + } + + @Override + protected boolean dbmTraceInjected() { + return true + } + + @Override + int version() { + return 1 + } + + @Override + protected String service(String dbType) { + return Config.get().getServiceName() + } + + @Override + protected String operation(String dbType) { + return "${dbType}.query" + } + + @Override + protected String getDbType(String dbType) { + final databaseNaming = new DatabaseNamingV1() + return databaseNaming.normalizedName(dbType) + } + + @Override + protected boolean dbmTracePreparedStatements(String dbType){ + return dbType == POSTGRESQL + } +} diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java index 2c55e314141..c5f2233cabb 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java @@ -19,11 +19,13 @@ import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; +import javax.jms.MessageListener; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -72,6 +74,9 @@ public void methodAdvice(MethodTransformer transformer) { public static class MDBAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static AgentScope methodEnter(@Advice.Argument(0) final Message message) { + if (CallDepthThreadLocalMap.incrementCallDepth(MessageListener.class) > 0) { + return null; + } AgentSpan.Context propagatedContext = propagate().extract(message, GETTER); AgentSpan span = startSpan(JMS_CONSUME, propagatedContext); CONSUMER_DECORATE.afterStart(span); @@ -93,6 +98,7 @@ public static AgentScope methodEnter(@Advice.Argument(0) final Message message) public static void methodExit( @Advice.Enter AgentScope scope, @Advice.Thrown final Throwable throwable) { if (null != scope) { + CallDepthThreadLocalMap.reset(MessageListener.class); CONSUMER_DECORATE.onError(scope, throwable); scope.close(); scope.span().finish(); diff --git a/dd-java-agent/instrumentation/junit-4.10/junit-4.13/gradle.lockfile b/dd-java-agent/instrumentation/junit-4.10/junit-4.13/gradle.lockfile index 092cf2a268d..d8a190eb319 100644 --- a/dd-java-agent/instrumentation/junit-4.10/junit-4.13/gradle.lockfile +++ b/dd-java-agent/instrumentation/junit-4.10/junit-4.13/gradle.lockfile @@ -9,7 +9,7 @@ com.beust:jcommander:1.78=latestDepTestRuntimeClasspath,testRuntimeClasspath com.blogspot.mydailyjava:weak-lock-free:0.17=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.datadoghq.okhttp3:okhttp:3.12.15=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.datadoghq.okio:okio:1.17.6=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.datadoghq:dd-javac-plugin-client:0.1.7=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq:dd-javac-plugin-client:0.2.2=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.datadoghq:java-dogstatsd-client:4.4.0=instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath com.datadoghq:sketches-java:0.8.3=instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath com.eed3si9n:shaded-jawn-parser_2.13:0.9.1=zinc @@ -60,12 +60,13 @@ commons-io:commons-io:2.11.0=latestDepTestCompileClasspath,latestDepTestRuntimeC de.thetaphi:forbiddenapis:3.1=compileClasspath info.picocli:picocli:4.6.3=latestDepTestRuntimeClasspath,testRuntimeClasspath io.github.java-diff-utils:java-diff-utils:4.12=zinc -io.sqreen:libsqreen:11.1.0=latestDepTestRuntimeClasspath,testRuntimeClasspath +io.sqreen:libsqreen:11.2.0=latestDepTestRuntimeClasspath,testRuntimeClasspath javax.servlet:javax.servlet-api:3.1.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath jaxen:jaxen:1.2.0=spotbugs jline:jline:2.14.6=latestDepTestRuntimeClasspath,testRuntimeClasspath junit:junit-dep:4.11=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -junit:junit:4.13.2=compileClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +junit:junit:4.13=compileClasspath +junit:junit:4.13.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy-agent:1.14.18=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.14.18=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath net.java.dev.jna:jna-platform:5.13.0=zinc @@ -179,10 +180,7 @@ org.scala-lang.modules:scala-parallel-collections_2.13:0.2.0=zinc org.scala-lang.modules:scala-parser-combinators_2.13:1.1.2=zinc org.scala-lang.modules:scala-xml_2.13:2.1.0=zinc org.scala-lang:scala-compiler:2.13.11=zinc -org.scala-lang:scala-library:2.13.10=testCompileClasspath,testRuntimeClasspath org.scala-lang:scala-library:2.13.11=zinc -org.scala-lang:scala-library:2.13.14=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.scala-lang:scala-library:2.13.6=compileClasspath org.scala-lang:scala-reflect:2.13.11=zinc org.scala-sbt.jline:jline:2.14.7-sbt-a1b0ffbb8f64bb820f4f84a0c07a0c0964507493=zinc org.scala-sbt:collections_2.13:1.9.2=zinc @@ -192,7 +190,6 @@ org.scala-sbt:core-macros_2.13:1.9.2=zinc org.scala-sbt:io_2.13:1.9.1=zinc org.scala-sbt:launcher-interface:1.4.2=zinc org.scala-sbt:sbinary_2.13:0.5.1=zinc -org.scala-sbt:test-interface:1.0=compileClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.scala-sbt:util-control_2.13:1.9.2=zinc org.scala-sbt:util-interface:1.9.2=zinc org.scala-sbt:util-logging_2.13:1.9.2=zinc @@ -206,11 +203,6 @@ org.scala-sbt:zinc-core_2.13:1.9.3=zinc org.scala-sbt:zinc-persist-core-assembly:1.9.3=zinc org.scala-sbt:zinc-persist_2.13:1.9.3=zinc org.scala-sbt:zinc_2.13:1.9.3=zinc -org.scalameta:junit-interface:0.7.28=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.scalameta:junit-interface:1.0.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.scalameta:munit-diff_2.13:1.0.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.scalameta:munit_2.13:0.7.28=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.scalameta:munit_2.13:1.0.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.skyscreamer:jsonassert:1.5.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jcl-over-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jul-to-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/gradle.lockfile b/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/gradle.lockfile index f04012d82e0..2ecfb96eef7 100644 --- a/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/gradle.lockfile +++ b/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/gradle.lockfile @@ -181,7 +181,7 @@ org.scala-lang.modules:scala-xml_2.13:2.1.0=zinc org.scala-lang:scala-compiler:2.13.11=zinc org.scala-lang:scala-library:2.13.10=testCompileClasspath,testRuntimeClasspath org.scala-lang:scala-library:2.13.11=zinc -org.scala-lang:scala-library:2.13.14=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.scala-lang:scala-library:2.13.15=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.scala-lang:scala-library:2.13.6=compileClasspath org.scala-lang:scala-reflect:2.13.11=zinc org.scala-sbt.jline:jline:2.14.7-sbt-a1b0ffbb8f64bb820f4f84a0c07a0c0964507493=zinc @@ -207,10 +207,10 @@ org.scala-sbt:zinc-persist-core-assembly:1.9.3=zinc org.scala-sbt:zinc-persist_2.13:1.9.3=zinc org.scala-sbt:zinc_2.13:1.9.3=zinc org.scalameta:junit-interface:0.7.28=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.scalameta:junit-interface:1.0.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.scalameta:munit-diff_2.13:1.0.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.scalameta:junit-interface:1.0.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.scalameta:munit-diff_2.13:1.0.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.scalameta:munit_2.13:0.7.28=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.scalameta:munit_2.13:1.0.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.scalameta:munit_2.13:1.0.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.skyscreamer:jsonassert:1.5.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jcl-over-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jul-to-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/junit-5.3/gradle.lockfile b/dd-java-agent/instrumentation/junit-5.3/gradle.lockfile index 86ace0836c1..fc6b4b70276 100644 --- a/dd-java-agent/instrumentation/junit-5.3/gradle.lockfile +++ b/dd-java-agent/instrumentation/junit-5.3/gradle.lockfile @@ -136,9 +136,9 @@ org.junit.jupiter:junit-jupiter-api:5.11.3=latestDepTestCompileClasspath,latestD org.junit.jupiter:junit-jupiter-api:5.3.0=compileClasspath org.junit.jupiter:junit-jupiter-api:5.9.2=testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-engine:5.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.junit.jupiter:junit-jupiter-engine:5.8.2=testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-engine:5.9.2=testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-params:5.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.junit.jupiter:junit-jupiter-params:5.8.2=testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-params:5.9.2=testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-commons:1.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.junit.platform:junit-platform-commons:1.3.0=compileClasspath org.junit.platform:junit-platform-commons:1.9.2=testCompileClasspath,testRuntimeClasspath @@ -147,7 +147,7 @@ org.junit.platform:junit-platform-engine:1.3.0=compileClasspath org.junit.platform:junit-platform-engine:1.9.2=testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-launcher:1.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.junit.platform:junit-platform-launcher:1.3.0=compileClasspath -org.junit.platform:junit-platform-launcher:1.8.2=testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-launcher:1.9.2=testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-runner:1.11.3=latestDepTestRuntimeClasspath org.junit.platform:junit-platform-runner:1.9.2=testRuntimeClasspath org.junit.platform:junit-platform-suite-api:1.11.3=latestDepTestRuntimeClasspath diff --git a/dd-java-agent/instrumentation/junit-5.3/junit-5.8/gradle.lockfile b/dd-java-agent/instrumentation/junit-5.3/junit-5.8/gradle.lockfile index 8a94125daa2..220fe3837d6 100644 --- a/dd-java-agent/instrumentation/junit-5.3/junit-5.8/gradle.lockfile +++ b/dd-java-agent/instrumentation/junit-5.3/junit-5.8/gradle.lockfile @@ -136,9 +136,9 @@ org.junit.jupiter:junit-jupiter-api:5.8.0=compileClasspath org.junit.jupiter:junit-jupiter-api:5.9.2=testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-engine:5.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.junit.jupiter:junit-jupiter-engine:5.8.0=compileClasspath -org.junit.jupiter:junit-jupiter-engine:5.8.2=testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-engine:5.9.2=testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-params:5.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -org.junit.jupiter:junit-jupiter-params:5.8.2=testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-params:5.9.2=testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-commons:1.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.junit.platform:junit-platform-commons:1.8.0=compileClasspath org.junit.platform:junit-platform-commons:1.9.2=testCompileClasspath,testRuntimeClasspath @@ -147,7 +147,7 @@ org.junit.platform:junit-platform-engine:1.8.0=compileClasspath org.junit.platform:junit-platform-engine:1.9.2=testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-launcher:1.11.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.junit.platform:junit-platform-launcher:1.8.0=compileClasspath -org.junit.platform:junit-platform-launcher:1.8.2=testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-launcher:1.9.2=testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-runner:1.11.3=latestDepTestRuntimeClasspath org.junit.platform:junit-platform-runner:1.9.2=testRuntimeClasspath org.junit.platform:junit-platform-suite-api:1.11.3=latestDepTestRuntimeClasspath diff --git a/dd-java-agent/instrumentation/kafka-connect-0.11/build.gradle b/dd-java-agent/instrumentation/kafka-connect-0.11/build.gradle new file mode 100644 index 00000000000..d5717e78304 --- /dev/null +++ b/dd-java-agent/instrumentation/kafka-connect-0.11/build.gradle @@ -0,0 +1,40 @@ +muzzle { + pass { + group = "org.apache.kafka" + module = "connect-runtime" + versions = "[0.11.0.0,)" + assertInverse = true + } +} + +apply from: "$rootDir/gradle/java.gradle" + +dependencies { + compileOnly group: 'org.apache.kafka', name: 'connect-runtime', version: '0.11.0.0' + + testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') + testRuntimeOnly project(':dd-java-agent:instrumentation:java-lang') + testRuntimeOnly project(':dd-java-agent:instrumentation:java-io') + testRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core') + testRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.8') + testImplementation(group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.10') + testImplementation group: 'org.assertj', name: 'assertj-core', version: '2.9.+' + testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.19.0' + testImplementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.3' + testImplementation 'org.apache.kafka:connect-api:2.7.0' // Fixed version + testImplementation 'org.apache.kafka:connect-runtime:2.7.0' + testImplementation 'org.apache.kafka:connect-file:2.7.0' // For FileStreamSourceConnector + testImplementation 'org.apache.kafka:kafka-clients:2.7.0' + // Spring Kafka Test library + testImplementation 'org.springframework.kafka:spring-kafka-test:2.7.9' // Version compatible with Kafka 2.7.x + testRuntimeOnly project(':dd-java-agent:instrumentation:kafka-clients-0.11') + testRuntimeOnly project(':dd-java-agent:instrumentation:kafka-clients-3.8') + testRuntimeOnly project(':dd-java-agent:instrumentation:kafka-streams-0.11') + testRuntimeOnly project(':dd-java-agent:instrumentation:kafka-streams-1.0') +} + +configurations.testRuntimeClasspath { + // spock-core depends on assertj version that is not compatible with kafka-clients + resolutionStrategy.force 'org.assertj:assertj-core:2.9.1' +} diff --git a/dd-java-agent/instrumentation/kafka-connect-0.11/gradle.lockfile b/dd-java-agent/instrumentation/kafka-connect-0.11/gradle.lockfile new file mode 100644 index 00000000000..eb091a85891 --- /dev/null +++ b/dd-java-agent/instrumentation/kafka-connect-0.11/gradle.lockfile @@ -0,0 +1,258 @@ +# This is a Gradle generated file for dependency locking. +# Manual edits can break the build and are not advised. +# This file is expected to be part of source control. +cafe.cryptography:curve25519-elisabeth:0.1.0=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +cafe.cryptography:ed25519-elisabeth:0.1.0=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +ch.qos.logback:logback-classic:1.2.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +ch.qos.logback:logback-core:1.2.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.101tec:zkclient:0.10=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.beust:jcommander:1.78=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +com.blogspot.mydailyjava:weak-lock-free:0.17=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq.okhttp3:okhttp:3.12.15=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq.okio:okio:1.17.6=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq:dd-javac-plugin-client:0.1.7=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq:java-dogstatsd-client:4.4.0=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.datadoghq:sketches-java:0.8.3=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-annotations:2.13.3=latestDepTestRuntimeClasspath +com.fasterxml.jackson.core:jackson-annotations:2.15.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +com.fasterxml.jackson.core:jackson-annotations:2.9.10=latestDepTestCompileClasspath,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-core:2.13.3=latestDepTestRuntimeClasspath +com.fasterxml.jackson.core:jackson-core:2.15.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +com.fasterxml.jackson.core:jackson-core:2.9.10=latestDepTestCompileClasspath,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-databind:2.13.3=latestDepTestRuntimeClasspath +com.fasterxml.jackson.core:jackson-databind:2.15.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +com.fasterxml.jackson.core:jackson-databind:2.9.10=latestDepTestCompileClasspath,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.13.3=latestDepTestRuntimeClasspath +com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.3=latestDepTestRuntimeClasspath +com.fasterxml.jackson.module:jackson-module-scala_2.13:2.13.3=latestDepTestRuntimeClasspath +com.fasterxml.jackson:jackson-bom:2.13.3=latestDepTestRuntimeClasspath +com.github.javaparser:javaparser-core:3.25.1=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.jnr:jffi:1.3.13=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-a64asm:1.0.0=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-constants:0.10.4=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-enxio:0.32.17=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-ffi:2.2.16=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-posix:3.1.19=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-unixsocket:0.38.22=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-x86asm:1.0.2=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.luben:zstd-jni:1.5.2-1=latestDepTestRuntimeClasspath +com.github.luben:zstd-jni:1.5.6-3=iastLatestDepTest3RuntimeClasspath +com.github.spotbugs:spotbugs-annotations:4.2.0=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.spotbugs:spotbugs-annotations:4.7.3=spotbugs +com.github.spotbugs:spotbugs:4.7.3=spotbugs +com.github.stefanbirkner:system-rules:1.19.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0-rc7=annotationProcessor,compileClasspath,iastLatestDepTest3AnnotationProcessor,iastLatestDepTest3CompileClasspath,latestDepTestAnnotationProcessor,latestDepTestCompileClasspath,testAnnotationProcessor,testCompileClasspath +com.google.auto.service:auto-service:1.0-rc7=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +com.google.auto:auto-common:0.10=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,compileClasspath,iastLatestDepTest3AnnotationProcessor,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestAnnotationProcessor,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,spotbugs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.code.gson:gson:2.9.1=spotbugs +com.google.errorprone:error_prone_annotations:2.2.0=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +com.google.guava:failureaccess:1.0.1=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +com.google.guava:guava:20.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.guava:guava:27.0.1-jre=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +com.google.re2j:re2j:1.7=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.squareup.moshi:moshi:1.11.0=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.squareup.okhttp3:logging-interceptor:3.12.12=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.squareup.okhttp3:okhttp:3.12.12=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.squareup.okio:okio:1.17.5=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.thoughtworks.paranamer:paranamer:2.8=latestDepTestRuntimeClasspath +com.thoughtworks.qdox:qdox:1.12.1=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +com.typesafe.scala-logging:scala-logging_2.13:3.9.4=latestDepTestRuntimeClasspath +com.yammer.metrics:metrics-core:2.2.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-cli:commons-cli:1.4=latestDepTestRuntimeClasspath +commons-codec:commons-codec:1.15=spotbugs +commons-fileupload:commons-fileupload:1.5=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-io:commons-io:2.11.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-logging:commons-logging:1.2=testCompileClasspath,testRuntimeClasspath +de.thetaphi:forbiddenapis:3.1=compileClasspath +info.picocli:picocli:4.6.3=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +io.dropwizard.metrics:metrics-core:4.1.12.1=latestDepTestRuntimeClasspath +io.micrometer:micrometer-commons:1.13.4=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +io.micrometer:micrometer-observation:1.13.4=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +io.netty:netty-buffer:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-codec:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-common:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-handler:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-resolver:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-transport-native-epoll:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-transport-native-unix-common:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-transport:4.1.63.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.sqreen:libsqreen:11.0.1=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +javax.activation:activation:1.1=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +javax.servlet:javax.servlet-api:3.1.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +javax.xml.bind:jaxb-api:2.2.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +javax.xml.stream:stax-api:1.0-2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jaxen:jaxen:1.2.0=spotbugs +jline:jline:2.14.6=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +junit:junit-dep:4.11=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +junit:junit:4.13.2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +log4j:log4j:1.2.16=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +net.bytebuddy:byte-buddy-agent:1.14.18=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +net.bytebuddy:byte-buddy:1.14.18=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.8.0=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +net.java.dev.jna:jna:5.8.0=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +net.jcip:jcip-annotations:1.0=compileClasspath,iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath +net.jpountz.lz4:lz4:1.3.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +net.sf.jopt-simple:jopt-simple:5.0.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +net.sf.jopt-simple:jopt-simple:5.0.4=latestDepTestRuntimeClasspath +net.sf.saxon:Saxon-HE:11.4=spotbugs +net.sourceforge.argparse4j:argparse4j:0.7.0=latestDepTestRuntimeClasspath +org.apache.ant:ant-antlr:1.10.12=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.apache.ant:ant-antlr:1.9.15=codenarc +org.apache.ant:ant-junit:1.10.12=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.apache.ant:ant-junit:1.9.15=codenarc +org.apache.ant:ant-launcher:1.10.12=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.apache.ant:ant:1.10.12=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.bcel:bcel:6.5.0=spotbugs +org.apache.commons:commons-lang3:3.12.0=spotbugs +org.apache.commons:commons-text:1.10.0=spotbugs +org.apache.httpcomponents.client5:httpclient5:5.1.3=spotbugs +org.apache.httpcomponents.core5:httpcore5-h2:5.1.3=spotbugs +org.apache.httpcomponents.core5:httpcore5:5.1.3=spotbugs +org.apache.kafka:kafka-clients:0.11.0.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.kafka:kafka-clients:3.2.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apache.kafka:kafka-clients:3.8.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.apache.kafka:kafka-metadata:3.2.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apache.kafka:kafka-raft:3.2.3=latestDepTestRuntimeClasspath +org.apache.kafka:kafka-server-common:3.2.3=latestDepTestRuntimeClasspath +org.apache.kafka:kafka-storage-api:3.2.3=latestDepTestRuntimeClasspath +org.apache.kafka:kafka-storage:3.2.3=latestDepTestRuntimeClasspath +org.apache.kafka:kafka-streams-test-utils:3.2.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apache.kafka:kafka-streams:3.2.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apache.kafka:kafka_2.11:0.11.0.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.kafka:kafka_2.13:3.2.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apache.logging.log4j:log4j-api:2.19.0=spotbugs +org.apache.logging.log4j:log4j-core:2.19.0=spotbugs +org.apache.yetus:audience-annotations:0.5.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apache.zookeeper:zookeeper-jute:3.6.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apache.zookeeper:zookeeper:3.4.10=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.zookeeper:zookeeper:3.6.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.apiguardian:apiguardian-api:1.1.2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.assertj:assertj-core:2.9.1=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.assertj:assertj-core:3.19.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.bitbucket.b_c:jose4j:0.7.9=latestDepTestRuntimeClasspath +org.checkerframework:checker-qual:2.5.2=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +org.codehaus.groovy:groovy-all:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-ant:2.5.14=codenarc +org.codehaus.groovy:groovy-ant:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-astbuilder:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-cli-picocli:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-console:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-datetime:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-docgenerator:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-groovydoc:2.5.14=codenarc +org.codehaus.groovy:groovy-groovydoc:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-groovysh:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-jmx:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-json:2.5.14=codenarc +org.codehaus.groovy:groovy-json:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-jsr223:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-macro:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-nio:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-servlet:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-sql:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-swing:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-templates:2.5.14=codenarc +org.codehaus.groovy:groovy-templates:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-test-junit5:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-test:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-testng:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-xml:2.5.14=codenarc +org.codehaus.groovy:groovy-xml:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy:2.5.14=codenarc +org.codehaus.groovy:groovy:3.0.17=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,iastLatestDepTest3AnnotationProcessor,latestDepTestAnnotationProcessor,testAnnotationProcessor +org.codenarc:CodeNarc:2.2.0=codenarc +org.dom4j:dom4j:2.1.3=spotbugs +org.eclipse.jetty:jetty-http:9.4.56.v20240826=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.jetty:jetty-io:9.4.56.v20240826=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.jetty:jetty-server:9.4.56.v20240826=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.jetty:jetty-util:9.4.56.v20240826=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.gmetrics:GMetrics:1.1=codenarc +org.hamcrest:hamcrest-core:1.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.hamcrest:hamcrest:2.2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jctools:jctools-core:3.3.0=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-api:5.9.2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-engine:5.9.2=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-commons:1.9.2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.9.2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-launcher:1.9.2=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-runner:1.9.2=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-suite-api:1.9.2=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-suite-commons:1.9.2=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.junit:junit-bom:5.9.1=spotbugs +org.junit:junit-bom:5.9.2=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.lz4:lz4-java:1.8.0=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath +org.mockito:mockito-core:2.19.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.objenesis:objenesis:3.3=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.opentest4j:opentest4j:1.2.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.ow2.asm:asm-analysis:9.2=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-analysis:9.4=spotbugs +org.ow2.asm:asm-commons:9.2=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-commons:9.4=spotbugs +org.ow2.asm:asm-tree:9.2=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.4=spotbugs +org.ow2.asm:asm-util:9.2=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-util:9.4=spotbugs +org.ow2.asm:asm:9.2=iastLatestDepTest3RuntimeClasspath,instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm:9.4=spotbugs +org.rocksdb:rocksdbjni:6.29.4.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.scala-lang.modules:scala-collection-compat_2.13:2.6.0=latestDepTestRuntimeClasspath +org.scala-lang.modules:scala-java8-compat_2.13:1.0.2=latestDepTestRuntimeClasspath +org.scala-lang.modules:scala-parser-combinators_2.11:1.0.4=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.scala-lang:scala-library:2.11.11=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.scala-lang:scala-library:2.13.8=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.scala-lang:scala-reflect:2.13.8=latestDepTestRuntimeClasspath +org.slf4j:jcl-over-slf4j:1.7.30=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:jul-to-slf4j:1.7.30=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:log4j-over-slf4j:1.7.30=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:slf4j-api:1.7.30=compileClasspath,iastLatestDepTest3CompileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath +org.slf4j:slf4j-api:1.7.32=testRuntimeClasspath +org.slf4j:slf4j-api:1.7.36=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath +org.slf4j:slf4j-api:2.0.0=spotbugs,spotbugsSlf4j +org.slf4j:slf4j-simple:2.0.0=spotbugsSlf4j +org.spockframework:spock-core:2.2-groovy-3.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.spockframework:spock-junit4:2.2-groovy-3.0=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework.kafka:spring-kafka-test:1.3.3.RELEASE=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework.kafka:spring-kafka-test:2.9.13=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework.kafka:spring-kafka:1.3.3.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework.kafka:spring-kafka:2.9.13=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework.kafka:spring-kafka:3.2.4=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework.retry:spring-retry:1.2.2.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework.retry:spring-retry:1.3.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework.retry:spring-retry:2.0.9=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-aop:4.3.14.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework:spring-aop:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-aop:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-beans:4.3.14.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework:spring-beans:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-beans:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-context:4.3.14.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework:spring-context:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-context:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-core:4.3.14.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework:spring-core:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-core:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-expression:4.3.14.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework:spring-expression:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-expression:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-jcl:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-jcl:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-messaging:4.3.14.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework:spring-messaging:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-messaging:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.springframework:spring-test:4.3.14.RELEASE=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-test:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-tx:4.3.14.RELEASE=testCompileClasspath,testRuntimeClasspath +org.springframework:spring-tx:5.3.29=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.springframework:spring-tx:6.1.13=iastLatestDepTest3CompileClasspath,iastLatestDepTest3RuntimeClasspath +org.testng:testng:7.5=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.webjars:jquery:3.5.1=iastLatestDepTest3RuntimeClasspath,latestDepTestRuntimeClasspath,testRuntimeClasspath +org.xerial.snappy:snappy-java:1.1.10.5=iastLatestDepTest3RuntimeClasspath +org.xerial.snappy:snappy-java:1.1.2.6=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.xerial.snappy:snappy-java:1.1.8.4=latestDepTestRuntimeClasspath +org.xmlresolver:xmlresolver:4.4.3=spotbugs +xml-apis:xml-apis:1.4.01=spotbugs +empty=spotbugsPlugins diff --git a/dd-java-agent/instrumentation/kafka-connect-0.11/src/main/java/datadog/trace/instrumentation/kafka_connect/ConnectWorkerInstrumentation.java b/dd-java-agent/instrumentation/kafka-connect-0.11/src/main/java/datadog/trace/instrumentation/kafka_connect/ConnectWorkerInstrumentation.java new file mode 100644 index 00000000000..e4ae35bfed4 --- /dev/null +++ b/dd-java-agent/instrumentation/kafka-connect-0.11/src/main/java/datadog/trace/instrumentation/kafka_connect/ConnectWorkerInstrumentation.java @@ -0,0 +1,68 @@ +package datadog.trace.instrumentation.kafka_connect; + +import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.extendsClass; +import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.*; + +import com.google.auto.service.AutoService; +import datadog.trace.agent.tooling.Instrumenter; +import datadog.trace.agent.tooling.InstrumenterModule; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.connect.runtime.TaskStatus.Listener; +import org.apache.kafka.connect.util.ConnectorTaskId; + +@AutoService(InstrumenterModule.class) +public final class ConnectWorkerInstrumentation extends InstrumenterModule.Tracing + implements Instrumenter.ForTypeHierarchy { + + static final String TARGET_TYPE = "org.apache.kafka.connect.runtime.WorkerTask"; + + public ConnectWorkerInstrumentation() { + super("kafka", "kafka-connect"); + } + + @Override + public String[] helperClassNames() { + return new String[] { + packageName + ".TaskListener", + }; + } + + @Override + public String hierarchyMarkerType() { + return TARGET_TYPE; + } + + @Override + public ElementMatcher hierarchyMatcher() { + return extendsClass(named(hierarchyMarkerType())); + } + + @Override + public void methodAdvice(MethodTransformer transformer) { + transformer.applyAdvice( + isConstructor() + .and(takesArgument(0, named("org.apache.kafka.connect.util.ConnectorTaskId"))) + .and(takesArgument(1, named("org.apache.kafka.connect.runtime.TaskStatus$Listener"))), + ConnectWorkerInstrumentation.class.getName() + "$ConstructorAdvice"); + } + + public static class ConstructorAdvice { + + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void wrap( + @Advice.Argument(value = 0, readOnly = true) ConnectorTaskId id, + @Advice.Argument(value = 1, readOnly = false) Listener statusListener) { + statusListener = new TaskListener(statusListener); + } + + public static void muzzleCheck(ConsumerRecord record) { + // KafkaConsumerInstrumentation only applies for kafka versions with headers + // Make an explicit call so ConsumerCoordinatorInstrumentation does the same + record.headers(); + } + } +} diff --git a/dd-java-agent/instrumentation/kafka-connect-0.11/src/main/java/datadog/trace/instrumentation/kafka_connect/TaskListener.java b/dd-java-agent/instrumentation/kafka-connect-0.11/src/main/java/datadog/trace/instrumentation/kafka_connect/TaskListener.java new file mode 100644 index 00000000000..c30ab4062e1 --- /dev/null +++ b/dd-java-agent/instrumentation/kafka-connect-0.11/src/main/java/datadog/trace/instrumentation/kafka_connect/TaskListener.java @@ -0,0 +1,52 @@ +package datadog.trace.instrumentation.kafka_connect; + +import datadog.trace.bootstrap.instrumentation.api.AgentTracer; +import org.apache.kafka.connect.runtime.TaskStatus.Listener; +import org.apache.kafka.connect.util.ConnectorTaskId; + +public class TaskListener implements Listener { + private final Listener delegate; + + public TaskListener(Listener delegate) { + this.delegate = delegate; + } + + @Override + public void onStartup(ConnectorTaskId connectorTaskId) { + AgentTracer.get().getDataStreamsMonitoring().setThreadServiceName(connectorTaskId.connector()); + delegate.onStartup(connectorTaskId); + } + + @Override + public void onPause(ConnectorTaskId connectorTaskId) { + try { + delegate.onPause(connectorTaskId); + } finally { + AgentTracer.get().getDataStreamsMonitoring().clearThreadServiceName(); + } + } + + @Override + public void onResume(ConnectorTaskId connectorTaskId) { + AgentTracer.get().getDataStreamsMonitoring().setThreadServiceName(connectorTaskId.connector()); + delegate.onResume(connectorTaskId); + } + + @Override + public void onFailure(ConnectorTaskId connectorTaskId, Throwable throwable) { + try { + delegate.onFailure(connectorTaskId, throwable); + } finally { + AgentTracer.get().getDataStreamsMonitoring().clearThreadServiceName(); + } + } + + @Override + public void onShutdown(ConnectorTaskId connectorTaskId) { + try { + delegate.onShutdown(connectorTaskId); + } finally { + AgentTracer.get().getDataStreamsMonitoring().clearThreadServiceName(); + } + } +} diff --git a/dd-java-agent/instrumentation/kafka-connect-0.11/src/test/groovy/ConnectWorkerInstrumentationTest.groovy b/dd-java-agent/instrumentation/kafka-connect-0.11/src/test/groovy/ConnectWorkerInstrumentationTest.groovy new file mode 100644 index 00000000000..48c69d7d115 --- /dev/null +++ b/dd-java-agent/instrumentation/kafka-connect-0.11/src/test/groovy/ConnectWorkerInstrumentationTest.groovy @@ -0,0 +1,183 @@ +import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.core.datastreams.StatsGroup +import org.apache.kafka.clients.admin.AdminClient +import org.apache.kafka.clients.admin.AdminClientConfig +import org.apache.kafka.clients.admin.DescribeClusterResult +import org.apache.kafka.clients.consumer.ConsumerConfig +import org.apache.kafka.clients.consumer.ConsumerRecords +import org.apache.kafka.clients.consumer.KafkaConsumer +import org.apache.kafka.common.utils.Time +import org.apache.kafka.connect.connector.policy.AllConnectorClientConfigOverridePolicy +import org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy +import org.apache.kafka.connect.runtime.Herder +import org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo +import org.apache.kafka.connect.runtime.standalone.StandaloneConfig +import org.apache.kafka.connect.runtime.standalone.StandaloneHerder +import org.apache.kafka.connect.runtime.Worker +import org.apache.kafka.connect.runtime.WorkerConfig +import org.apache.kafka.connect.runtime.isolation.Plugins +import org.apache.kafka.connect.storage.FileOffsetBackingStore +import org.apache.kafka.connect.util.Callback +import org.springframework.kafka.test.EmbeddedKafkaBroker +import spock.lang.Shared + +import java.time.Duration +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit + +class ConnectWorkerInstrumentationTest extends AgentTestRunner { + @Shared + EmbeddedKafkaBroker embeddedKafka = new EmbeddedKafkaBroker(1, false, 1, 'test-topic') + + def setupSpec() { + embeddedKafka.afterPropertiesSet() // Initializes the broker + } + + def cleanupSpec() { + embeddedKafka.destroy() + } + + @Override + void configurePreAgent() { + super.configurePreAgent() + } + + def "test kafka-connect instrumentation"() { + // Kafka bootstrap servers from the embedded broker + String bootstrapServers = embeddedKafka.getBrokersAsString() + + // Retrieve Kafka cluster ID + // Create an AdminClient to interact with the Kafka cluster + Properties adminProps = new Properties() + adminProps.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers) + String clusterId = null + try (AdminClient adminClient = AdminClient.create(adminProps)) { + DescribeClusterResult describeClusterResult = adminClient.describeCluster() + clusterId = describeClusterResult.clusterId().get() // Retrieve the cluster ID + } + assert clusterId != null : "Cluster ID is null" + + // Create a temporary file with a test message + File tempFile = File.createTempFile("test-message", ".txt") + + // Worker properties + Properties workerProps = new Properties() + workerProps.put(WorkerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers) + workerProps.put(WorkerConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter") + workerProps.put(WorkerConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter") + workerProps.put(StandaloneConfig.OFFSET_STORAGE_FILE_FILENAME_CONFIG, "/tmp/connect.offsets") + workerProps.put(WorkerConfig.INTERNAL_KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.json.JsonConverter") + workerProps.put(WorkerConfig.INTERNAL_VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.json.JsonConverter") + workerProps.put(WorkerConfig.PLUGIN_PATH_CONFIG, "") // Required but can be empty for built-in connectors + workerProps.put("plugin.scan.classpath", "true") + + Map workerPropsMap = workerProps.stringPropertyNames() + .collectEntries { [(it): workerProps.getProperty(it)] } + + // Create the Connect worker + Time time = Time.SYSTEM + Plugins plugins = new Plugins(workerPropsMap) + plugins.compareAndSwapWithDelegatingLoader() + String workerId = "worker-1" + + FileOffsetBackingStore offsetBackingStore = new FileOffsetBackingStore() + WorkerConfig workerConfig = new StandaloneConfig(workerPropsMap) + offsetBackingStore.configure(workerConfig) + ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy = new AllConnectorClientConfigOverridePolicy() + Worker worker = new Worker(workerId, time, plugins, workerConfig, offsetBackingStore, connectorClientConfigOverridePolicy) + Herder herder = new StandaloneHerder(worker, clusterId, connectorClientConfigOverridePolicy) + + // Start worker and herder + worker.start() + herder.start() + + // Connector configuration + Map connectorProps = [ + 'name' : 'file-source-connector', + 'connector.class': 'org.apache.kafka.connect.file.FileStreamSourceConnector', + 'tasks.max' : '1', + 'file' : tempFile.getAbsolutePath(), + 'topic' : 'test-topic' + ] + + // Latch to wait for connector addition + CountDownLatch connectorAddedLatch = new CountDownLatch(1) + Callback> addConnectorCallback = new Callback>() { + @Override + void onCompletion(Throwable error, Herder.Created result) { + if (error != null) { + error.printStackTrace() + } else { + println "Connector added successfully." + } + connectorAddedLatch.countDown() + } + } + + when: + // Add the connector to the herder + herder.putConnectorConfig("file-source-connector", connectorProps, false, addConnectorCallback) + + // Wait for the connector to be added + boolean connectorAdded = connectorAddedLatch.await(10, TimeUnit.SECONDS) + assert connectorAdded : "Connector was not added in time" + + tempFile.write("Hello Kafka\n") + + // Consume the message from Kafka + Properties consumerProps = new Properties() + consumerProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers) + consumerProps.put(ConsumerConfig.GROUP_ID_CONFIG, "test-consumer-group") + consumerProps.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest") + consumerProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer") + consumerProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer") + + KafkaConsumer consumer = new KafkaConsumer<>(consumerProps) + consumer.subscribe(['test-topic']) + + String receivedMessage = null + for (int i = 0; i < 10; i++) { // Try for up to 10 seconds + ConsumerRecords records = consumer.poll(Duration.ofSeconds(1)) + if (!records.isEmpty()) { + receivedMessage = records.iterator().next().value() + break + } + } + TEST_DATA_STREAMS_WRITER.waitForGroups(2) + + then: + receivedMessage == "Hello Kafka" + + StatsGroup first = TEST_DATA_STREAMS_WRITER.groups.find { it.parentHash == 0 } + verifyAll(first) { + assert [ + "direction:out", + "topic:test-topic", + "type:kafka" + ].every( tag -> edgeTags.contains(tag) ) + } + + StatsGroup second = TEST_DATA_STREAMS_WRITER.groups.find { it.parentHash == first.hash } + verifyAll(second) { + assert [ + "direction:in", + "group:test-consumer-group", + "topic:test-topic", + "type:kafka" + ].every( tag -> edgeTags.contains(tag) ) + } + TEST_DATA_STREAMS_WRITER.getServices().contains('file-source-connector') + + + cleanup: + consumer?.close() + herder?.stop() + worker?.stop() + tempFile?.delete() + } + + @Override + protected boolean isDataStreamsEnabled() { + return true + } +} diff --git a/dd-java-agent/instrumentation/lettuce-5/gradle.lockfile b/dd-java-agent/instrumentation/lettuce-5/gradle.lockfile index 708f1710512..dc70698cb6d 100644 --- a/dd-java-agent/instrumentation/lettuce-5/gradle.lockfile +++ b/dd-java-agent/instrumentation/lettuce-5/gradle.lockfile @@ -58,19 +58,19 @@ commons-io:commons-io:2.11.0=latestDepTestCompileClasspath,latestDepTestRuntimeC de.thetaphi:forbiddenapis:3.1=compileClasspath info.picocli:picocli:4.6.3=latestDepTestRuntimeClasspath,testRuntimeClasspath io.lettuce:lettuce-core:5.0.0.RELEASE=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.lettuce:lettuce-core:6.5.0.RELEASE=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -io.netty:netty-buffer:4.1.113.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.lettuce:lettuce-core:6.5.1.RELEASE=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-buffer:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-buffer:4.1.15.Final=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.netty:netty-codec:4.1.113.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-codec:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-codec:4.1.15.Final=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.netty:netty-common:4.1.113.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-common:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-common:4.1.15.Final=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.netty:netty-handler:4.1.113.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-handler:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-handler:4.1.15.Final=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.netty:netty-resolver:4.1.113.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-resolver:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-resolver:4.1.15.Final=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.netty:netty-transport-native-unix-common:4.1.113.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath -io.netty:netty-transport:4.1.113.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-transport-native-unix-common:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.netty:netty-transport:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-transport:4.1.15.Final=compileClasspath,testCompileClasspath,testRuntimeClasspath io.projectreactor:reactor-core:3.1.0.RELEASE=compileClasspath,testCompileClasspath,testRuntimeClasspath io.projectreactor:reactor-core:3.6.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath diff --git a/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/BundleNameHelper.java b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/BundleNameHelper.java new file mode 100644 index 00000000000..6acbed6647b --- /dev/null +++ b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/BundleNameHelper.java @@ -0,0 +1,21 @@ +package datadog.trace.instrumentation.liberty20; + +import com.ibm.ws.classloading.internal.ThreadContextClassLoader; + +public class BundleNameHelper { + private BundleNameHelper() {} + + public static String extractDeploymentName(final ThreadContextClassLoader classLoader) { + final String id = classLoader.getKey(); + // id is something like :name#somethingelse + final int head = id.indexOf(':'); + if (head < 0) { + return null; + } + final int tail = id.lastIndexOf('#'); + if (tail <= head) { + return null; + } + return id.substring(head + 1, tail); + } +} diff --git a/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java index eac3a358f2a..02e4d1e797b 100644 --- a/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java @@ -12,11 +12,15 @@ import com.google.auto.service.AutoService; import com.ibm.ws.webcontainer.srt.SRTServletRequest; import com.ibm.ws.webcontainer.srt.SRTServletResponse; +import com.ibm.ws.webcontainer.webapp.WebApp; +import com.ibm.wsspi.webcontainer.webapp.IWebAppDispatcherContext; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.Config; import datadog.trace.api.CorrelationIdentifier; import datadog.trace.api.GlobalTracer; import datadog.trace.api.gateway.Flow; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.bootstrap.ActiveSubsystems; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.InstrumentationContext; @@ -104,7 +108,18 @@ public static class HandleRequestAdvice { request.setAttribute(DD_EXTRACTED_CONTEXT_ATTRIBUTE, extractedContext); final AgentSpan span = DECORATE.startSpan(request, extractedContext); scope = activateSpan(span, true); - + if (Config.get().isJeeSplitByDeployment()) { + final IWebAppDispatcherContext dispatcherContext = request.getWebAppDispatcherContext(); + if (dispatcherContext != null) { + final WebApp webapp = dispatcherContext.getWebApp(); + if (webapp != null) { + final ClassLoader cl = webapp.getClassLoader(); + if (cl != null) { + ClassloaderServiceNames.maybeSetToSpan(span, cl); + } + } + } + } DECORATE.afterStart(span); DECORATE.onRequest(span, request, request, extractedContext); request.setAttribute(DD_SPAN_ATTRIBUTE, span); diff --git a/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/ThreadContextClassloaderInstrumentation.java b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/ThreadContextClassloaderInstrumentation.java new file mode 100644 index 00000000000..3275e2abd45 --- /dev/null +++ b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/ThreadContextClassloaderInstrumentation.java @@ -0,0 +1,47 @@ +package datadog.trace.instrumentation.liberty20; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; + +import com.google.auto.service.AutoService; +import com.ibm.ws.classloading.internal.ThreadContextClassLoader; +import datadog.trace.agent.tooling.Instrumenter; +import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.naming.ClassloaderServiceNames; +import net.bytebuddy.asm.Advice; + +@AutoService(InstrumenterModule.class) +public class ThreadContextClassloaderInstrumentation extends InstrumenterModule.Tracing + implements Instrumenter.ForSingleType { + + public ThreadContextClassloaderInstrumentation() { + super("liberty", "liberty-classloading"); + } + + @Override + public String instrumentedType() { + return "com.ibm.ws.classloading.internal.ThreadContextClassLoader"; + } + + @Override + public String[] helperClassNames() { + return new String[] { + packageName + ".BundleNameHelper", + }; + } + + @Override + public void methodAdvice(MethodTransformer transformer) { + transformer.applyAdvice( + isConstructor(), getClass().getName() + "$ThreadContextClassloaderAdvice"); + } + + public static class ThreadContextClassloaderAdvice { + @Advice.OnMethodExit(suppress = Throwable.class) + public static void afterConstruct(@Advice.This ThreadContextClassLoader self) { + final String name = BundleNameHelper.extractDeploymentName(self); + if (name != null && !name.isEmpty()) { + ClassloaderServiceNames.addServiceName(self, name); + } + } + } +} diff --git a/dd-java-agent/instrumentation/liberty-20/src/test/groovy/datadog/trace/instrumentation/liberty20/Liberty20Test.groovy b/dd-java-agent/instrumentation/liberty-20/src/test/groovy/datadog/trace/instrumentation/liberty20/Liberty20Test.groovy index 7e64aafba50..56c3ca15dc0 100644 --- a/dd-java-agent/instrumentation/liberty-20/src/test/groovy/datadog/trace/instrumentation/liberty20/Liberty20Test.groovy +++ b/dd-java-agent/instrumentation/liberty-20/src/test/groovy/datadog/trace/instrumentation/liberty20/Liberty20Test.groovy @@ -213,6 +213,20 @@ class Liberty20AsyncForkedTest extends Liberty20Test implements TestingGenericHt } } +@IgnoreIf({ + // failing because org.apache.xalan.transformer.TransformerImpl is + // instrumented while on the the global ignores list + System.getProperty('java.vm.name') == 'IBM J9 VM' && + System.getProperty('java.specification.version') == '1.8' }) +class LibertyServletClassloaderNamingForkedTest extends Liberty20V0ForkedTest { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // will not set the service name according to the servlet context value + injectSysConfig("trace.experimental.jee.split-by-deployment", "true") + } +} + @IgnoreIf({ // failing because org.apache.xalan.transformer.TransformerImpl is // instrumented while on the the global ignores list diff --git a/dd-java-agent/instrumentation/liberty-23/build.gradle b/dd-java-agent/instrumentation/liberty-23/build.gradle index 75e5b97f3d0..8d88ad12b93 100644 --- a/dd-java-agent/instrumentation/liberty-23/build.gradle +++ b/dd-java-agent/instrumentation/liberty-23/build.gradle @@ -34,6 +34,7 @@ dependencies { testImplementation testFixtures(project(':dd-java-agent:appsec')) testRuntimeOnly project(':dd-java-agent:instrumentation:osgi-4.3') testRuntimeOnly files({ tasks.filterLogbackClassic.filteredLogbackDir }) + testRuntimeOnly project(':dd-java-agent:instrumentation:liberty-20') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:request-5') testRuntimeOnly files({ tasks.shadowJar.archiveFile }) diff --git a/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java b/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java index 3209bbed508..8d0440eef3b 100644 --- a/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java @@ -12,11 +12,15 @@ import com.google.auto.service.AutoService; import com.ibm.ws.webcontainer.srt.SRTServletRequest; import com.ibm.ws.webcontainer.srt.SRTServletResponse; +import com.ibm.ws.webcontainer.webapp.WebApp; +import com.ibm.wsspi.webcontainer.webapp.IWebAppDispatcherContext; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.Config; import datadog.trace.api.CorrelationIdentifier; import datadog.trace.api.GlobalTracer; import datadog.trace.api.gateway.Flow; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.bootstrap.ActiveSubsystems; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.InstrumentationContext; @@ -106,7 +110,18 @@ public static class HandleRequestAdvice { request.setAttribute(DD_EXTRACTED_CONTEXT_ATTRIBUTE, extractedContext); final AgentSpan span = DECORATE.startSpan(request, extractedContext); scope = activateSpan(span, true); - + if (Config.get().isJeeSplitByDeployment()) { + final IWebAppDispatcherContext dispatcherContext = request.getWebAppDispatcherContext(); + if (dispatcherContext != null) { + final WebApp webapp = dispatcherContext.getWebApp(); + if (webapp != null) { + final ClassLoader cl = webapp.getClassLoader(); + if (cl != null) { + ClassloaderServiceNames.maybeSetToSpan(span, cl); + } + } + } + } DECORATE.afterStart(span); DECORATE.onRequest(span, request, request, extractedContext); request.setAttribute(DD_SPAN_ATTRIBUTE, span); diff --git a/dd-java-agent/instrumentation/liberty-23/src/test/groovy/datadog/trace/instrumentation/liberty23/Liberty23Test.groovy b/dd-java-agent/instrumentation/liberty-23/src/test/groovy/datadog/trace/instrumentation/liberty23/Liberty23Test.groovy index 5ad1162f4ff..805e2dcfe97 100644 --- a/dd-java-agent/instrumentation/liberty-23/src/test/groovy/datadog/trace/instrumentation/liberty23/Liberty23Test.groovy +++ b/dd-java-agent/instrumentation/liberty-23/src/test/groovy/datadog/trace/instrumentation/liberty23/Liberty23Test.groovy @@ -170,3 +170,17 @@ class Liberty23V0ForkedTest extends Liberty23Test implements TestingGenericHttpN System.getProperty('java.specification.version') == '1.8' }) class Liberty23V1ForkedTest extends Liberty23Test implements TestingGenericHttpNamingConventions.ServerV1 { } + +@IgnoreIf({ + // failing because org.apache.xalan.transformer.TransformerImpl is + // instrumented while on the the global ignores list + System.getProperty('java.vm.name') == 'IBM J9 VM' && + System.getProperty('java.specification.version') == '1.8' }) +class LibertyServletClassloaderNamingForkedTest extends Liberty23V0ForkedTest { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // will not set the service name according to the servlet context value + injectSysConfig("trace.experimental.jee.split-by-deployment", "true") + } +} diff --git a/dd-java-agent/instrumentation/micronaut/http-server-netty-4.0/gradle.lockfile b/dd-java-agent/instrumentation/micronaut/http-server-netty-4.0/gradle.lockfile index 695c6c6fd6d..d8c62459412 100644 --- a/dd-java-agent/instrumentation/micronaut/http-server-netty-4.0/gradle.lockfile +++ b/dd-java-agent/instrumentation/micronaut/http-server-netty-4.0/gradle.lockfile @@ -62,37 +62,37 @@ commons-io:commons-io:2.11.0=latestDepTestCompileClasspath,latestDepTestRuntimeC de.thetaphi:forbiddenapis:3.1=compileClasspath info.picocli:picocli:4.6.3=latestDepTestRuntimeClasspath,testRuntimeClasspath io.micronaut:micronaut-aop:4.0.0=latestDepTestAnnotationProcessor,main_java17CompileClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-aop:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-aop:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-buffer-netty:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-buffer-netty:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-buffer-netty:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-context-propagation:4.0.0=testRuntimeClasspath -io.micronaut:micronaut-context-propagation:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-context-propagation:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-context:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-context:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-context:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-core-processor:4.0.0=latestDepTestAnnotationProcessor,testAnnotationProcessor io.micronaut:micronaut-core-reactive:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-core-reactive:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-core-reactive:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-core:4.0.0=latestDepTestAnnotationProcessor,main_java17CompileClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-core:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-core:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-http-netty:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-http-netty:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-http-netty:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-http-server-netty:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-http-server-netty:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-http-server-netty:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-http-server:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-http-server:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-http-server:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-http:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-http:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-http:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-inject-java:4.0.0=latestDepTestAnnotationProcessor,testAnnotationProcessor io.micronaut:micronaut-inject:4.0.0=latestDepTestAnnotationProcessor,main_java17CompileClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-inject:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-inject:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-jackson-core:4.0.0=testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-jackson-core:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-jackson-core:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-jackson-databind:4.0.0=testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-jackson-databind:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-jackson-databind:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-json-core:4.0.0=testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-json-core:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-json-core:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.micronaut:micronaut-router:4.0.0=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath -io.micronaut:micronaut-router:4.7.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.micronaut:micronaut-router:4.7.7=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-buffer:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.netty:netty-buffer:4.1.94.Final=main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath io.netty:netty-codec-http2:4.1.115.Final=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath @@ -197,17 +197,20 @@ org.objenesis:objenesis:3.3=latestDepTestCompileClasspath,latestDepTestRuntimeCl org.opentest4j:opentest4j:1.2.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.ow2.asm:asm-analysis:9.2=instrumentPluginClasspath,latestDepTestRuntimeClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm-analysis:9.4=spotbugs -org.ow2.asm:asm-commons:9.2=instrumentPluginClasspath,latestDepTestRuntimeClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-commons:9.2=instrumentPluginClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath org.ow2.asm:asm-commons:9.4=spotbugs org.ow2.asm:asm-commons:9.5=latestDepTestAnnotationProcessor,testAnnotationProcessor -org.ow2.asm:asm-tree:9.2=instrumentPluginClasspath,latestDepTestRuntimeClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-commons:9.7=latestDepTestRuntimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.2=instrumentPluginClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath org.ow2.asm:asm-tree:9.4=spotbugs org.ow2.asm:asm-tree:9.5=latestDepTestAnnotationProcessor,testAnnotationProcessor +org.ow2.asm:asm-tree:9.7=latestDepTestRuntimeClasspath,testRuntimeClasspath org.ow2.asm:asm-util:9.2=instrumentPluginClasspath,latestDepTestRuntimeClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm-util:9.4=spotbugs -org.ow2.asm:asm:9.2=instrumentPluginClasspath,latestDepTestRuntimeClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm:9.2=instrumentPluginClasspath,main_java17RuntimeClasspath,muzzleTooling,runtimeClasspath org.ow2.asm:asm:9.4=spotbugs org.ow2.asm:asm:9.5=latestDepTestAnnotationProcessor,testAnnotationProcessor +org.ow2.asm:asm:9.7=latestDepTestRuntimeClasspath,testRuntimeClasspath org.reactivestreams:reactive-streams:1.0.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,main_java17CompileClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jcl-over-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jul-to-slf4j:1.7.30=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/mule-4/gradle.lockfile b/dd-java-agent/instrumentation/mule-4/gradle.lockfile index da2508ae972..15c0784dc83 100644 --- a/dd-java-agent/instrumentation/mule-4/gradle.lockfile +++ b/dd-java-agent/instrumentation/mule-4/gradle.lockfile @@ -1,443 +1,831 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -cafe.cryptography:curve25519-elisabeth:0.1.0=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -cafe.cryptography:ed25519-elisabeth:0.1.0=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -ch.qos.logback:logback-classic:1.2.3=testCompileClasspath,testRuntimeClasspath -ch.qos.logback:logback-core:1.2.3=testCompileClasspath,testRuntimeClasspath -com.beust:jcommander:1.78=testCompileClasspath,testRuntimeClasspath -com.blogspot.mydailyjava:weak-lock-free:0.17=compileClasspath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.chuusai:shapeless_2.12:2.3.3=muleServices -com.conversantmedia:disruptor:1.2.10=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.damnhandy:handy-uri-templates:2.1.8=muleServices -com.datadoghq.okhttp3:okhttp:3.12.15=compileClasspath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.datadoghq.okio:okio:1.17.6=compileClasspath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.datadoghq:dd-javac-plugin-client:0.2.2=compileClasspath,instrumentPluginClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.datadoghq:java-dogstatsd-client:4.4.0=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.datadoghq:sketches-java:0.8.3=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +cafe.cryptography:curve25519-elisabeth:0.1.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +cafe.cryptography:ed25519-elisabeth:0.1.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +ch.qos.logback:logback-classic:1.2.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +ch.qos.logback:logback-core:1.2.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +ch.randelshofer:fastdoubleparser:0.8.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,mule46Services,muleServices,testCompileClasspath,testRuntimeClasspath +com.beust:jcommander:1.78=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.beust:jcommander:1.82=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.blogspot.mydailyjava:weak-lock-free:0.17=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.chuusai:shapeless_2.12:2.3.3=mule46Services,muleServices +com.conversantmedia:disruptor:1.2.10=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.damnhandy:handy-uri-templates:2.1.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46Services,muleServices +com.datadoghq.okhttp3:okhttp:3.12.15=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq.okio:okio:1.17.6=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq:dd-javac-plugin-client:0.2.2=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.datadoghq:java-dogstatsd-client:4.4.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.datadoghq:sketches-java:0.8.3=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath com.fasterxml.jackson.core:jackson-annotations:2.10.0=compileClasspath -com.fasterxml.jackson.core:jackson-annotations:2.12.7=muleServices -com.fasterxml.jackson.core:jackson-annotations:2.15.0=testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-annotations:2.15.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,mule46Services,muleServices,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-annotations:2.16.1=latestMuleServices +com.fasterxml.jackson.core:jackson-annotations:2.17.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath com.fasterxml.jackson.core:jackson-core:2.10.0=compileClasspath -com.fasterxml.jackson.core:jackson-core:2.15.0=muleServices,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-core:2.15.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,mule46Services,muleServices,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-core:2.16.1=latestMuleServices +com.fasterxml.jackson.core:jackson-core:2.17.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath com.fasterxml.jackson.core:jackson-databind:2.10.0=compileClasspath -com.fasterxml.jackson.core:jackson-databind:2.12.7=muleServices -com.fasterxml.jackson.core:jackson-databind:2.15.0=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.0=testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.module:jackson-module-jsonSchema:2.10.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.fasterxml.woodstox:woodstox-core:6.4.0=muleServices -com.fasterxml:aalto-xml:1.3.2=muleServices -com.github.ben-manes.caffeine:caffeine:2.8.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.9.0=muleServices -com.github.erosb:everit-json-schema:1.14.2=muleServices -com.github.fge:btf:1.2=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.github.fge:msg-simple:1.1=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.github.fge:uri-template:0.9=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.github.java-json-tools:jackson-coreutils:1.9=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.github.java-json-tools:json-schema-core:1.2.10=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.github.java-json-tools:json-schema-validator:2.2.10=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.github.javaparser:javaparser-core:3.25.1=testCompileClasspath,testRuntimeClasspath -com.github.jnr:jffi:1.3.13=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-a64asm:1.0.0=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-constants:0.10.4=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-enxio:0.32.17=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-ffi:2.2.16=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-posix:3.1.19=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-unixsocket:0.38.22=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-x86asm:1.0.2=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.github.spotbugs:spotbugs-annotations:4.7.3=compileClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-databind:2.15.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,mule46Services,muleServices,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.core:jackson-databind:2.16.1=latestMuleServices +com.fasterxml.jackson.core:jackson-databind:2.17.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.17.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.fasterxml.jackson.module:jackson-module-jsonSchema:2.10.0=compileClasspath +com.fasterxml.jackson.module:jackson-module-jsonSchema:2.15.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson.module:jackson-module-jsonSchema:2.17.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.fasterxml.jackson:jackson-bom:2.15.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,mule46Services,muleServices,testCompileClasspath,testRuntimeClasspath +com.fasterxml.jackson:jackson-bom:2.16.1=latestMuleServices +com.fasterxml.jackson:jackson-bom:2.17.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.fasterxml.woodstox:woodstox-core:6.4.0=mule46Services,muleServices +com.fasterxml.woodstox:woodstox-core:6.6.1=latestMuleServices +com.fasterxml:aalto-xml:1.3.2=latestMuleServices,mule46Services,muleServices +com.github.ben-manes.caffeine:caffeine:2.8.0=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.ben-manes.caffeine:caffeine:2.9.0=mule46Services,muleServices +com.github.ben-manes.caffeine:caffeine:2.9.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices +com.github.erosb:everit-json-schema:1.14.2=mule46Services,muleServices +com.github.erosb:everit-json-schema:1.14.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices +com.github.fge:btf:1.2=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.fge:msg-simple:1.1=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.fge:uri-template:0.9=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.java-json-tools:jackson-coreutils:1.9=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.java-json-tools:json-schema-core:1.2.10=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.java-json-tools:json-schema-validator:2.2.10=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.javaparser:javaparser-core:3.25.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.jnr:jffi:1.3.13=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-a64asm:1.0.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-constants:0.10.4=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-enxio:0.32.17=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-ffi:2.2.16=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-posix:3.1.19=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-unixsocket:0.38.22=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.jnr:jnr-x86asm:1.0.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.github.spotbugs:spotbugs-annotations:4.7.3=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath com.github.spotbugs:spotbugs:4.7.3=spotbugs -com.github.stefanbirkner:system-rules:1.19.0=testCompileClasspath,testRuntimeClasspath -com.google.auto.service:auto-service-annotations:1.0-rc7=annotationProcessor,compileClasspath,testAnnotationProcessor,testCompileClasspath -com.google.auto.service:auto-service:1.0-rc7=annotationProcessor,testAnnotationProcessor -com.google.auto:auto-common:0.10=annotationProcessor,testAnnotationProcessor -com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,compileClasspath,spotbugs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.github.stefanbirkner:system-rules:1.19.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0-rc7=annotationProcessor,compileClasspath,latestDepForkedTestAnnotationProcessor,latestDepForkedTestCompileClasspath,mule46ForkedTestAnnotationProcessor,mule46ForkedTestCompileClasspath,testAnnotationProcessor,testCompileClasspath +com.google.auto.service:auto-service:1.0-rc7=annotationProcessor,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,testAnnotationProcessor +com.google.auto:auto-common:0.10=annotationProcessor,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,testAnnotationProcessor +com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,compileClasspath,latestDepForkedTestAnnotationProcessor,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestAnnotationProcessor,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,spotbugs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.code.gson:gson:2.11.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath com.google.code.gson:gson:2.8.9=compileClasspath -com.google.code.gson:gson:2.9.0=testCompileClasspath,testRuntimeClasspath +com.google.code.gson:gson:2.9.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.9.1=spotbugs com.google.errorprone:error_prone_annotations:2.18.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.2.0=annotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.5.1=muleServices -com.google.guava:failureaccess:1.0.1=annotationProcessor,compileClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=annotationProcessor,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.2.0=annotationProcessor,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.21.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +com.google.errorprone:error_prone_annotations:2.26.1=latestMuleServices +com.google.errorprone:error_prone_annotations:2.28.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.google.errorprone:error_prone_annotations:2.5.1=mule46Services,muleServices +com.google.guava:failureaccess:1.0.1=annotationProcessor,compileClasspath,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:failureaccess:1.0.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices +com.google.guava:guava-parent:32.1.1-jre=compileClasspath,testCompileClasspath,testRuntimeClasspath +com.google.guava:guava:27.0.1-jre=annotationProcessor,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,testAnnotationProcessor com.google.guava:guava:32.1.1-jre=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,testAnnotationProcessor -com.google.j2objc:j2objc-annotations:2.8=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.google.re2j:re2j:1.6=muleServices -com.google.re2j:re2j:1.7=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -com.googlecode.juniversalchardet:juniversalchardet:1.0.3=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.googlecode.libphonenumber:libphonenumber:8.0.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.ibm.icu:icu4j:67.1=muleServices -com.lmax:disruptor:3.4.3=testCompileClasspath,testRuntimeClasspath -com.mchange:c3p0:0.9.5.5=muleServices -com.mchange:mchange-commons-java:0.2.19=muleServices -com.squareup.moshi:moshi:1.11.0=compileClasspath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.squareup.okhttp3:logging-interceptor:3.12.12=testCompileClasspath,testRuntimeClasspath -com.squareup.okhttp3:okhttp:3.12.12=testCompileClasspath -com.squareup.okhttp3:okhttp:4.11.0=testRuntimeClasspath +com.google.guava:guava:32.1.3-jre=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +com.google.guava:guava:33.2.1-jre=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,latestDepForkedTestAnnotationProcessor,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46ForkedTestAnnotationProcessor,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,testAnnotationProcessor +com.google.j2objc:j2objc-annotations:2.8=compileClasspath,mule46ForkedTestCompileClasspath,testCompileClasspath +com.google.j2objc:j2objc-annotations:3.0.0=latestDepForkedTestCompileClasspath +com.google.re2j:re2j:1.6=latestDepForkedTestCompileClasspath,latestMuleServices,mule46Services,muleServices +com.google.re2j:re2j:1.7=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +com.googlecode.juniversalchardet:juniversalchardet:1.0.3=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.googlecode.libphonenumber:libphonenumber:8.0.0=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.ibm.icu:icu4j:67.1=mule46Services,muleServices +com.ibm.icu:icu4j:71.1=latestMuleServices +com.lmax:disruptor:3.4.3=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.lmax:disruptor:3.4.4=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.mchange:c3p0:0.10.1=latestMuleServices +com.mchange:c3p0:0.9.5.5=mule46Services,muleServices +com.mchange:mchange-commons-java:0.2.19=mule46Services,muleServices +com.mchange:mchange-commons-java:0.3.1=latestMuleServices +com.squareup.moshi:moshi:1.11.0=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.squareup.okhttp3:logging-interceptor:3.12.12=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.squareup.okhttp3:okhttp:3.12.12=latestDepForkedTestCompileClasspath,mule46ForkedTestCompileClasspath,testCompileClasspath +com.squareup.okhttp3:okhttp:4.11.0=mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +com.squareup.okhttp3:okhttp:4.12.0=latestDepForkedTestRuntimeClasspath com.squareup.okio:okio-jvm:3.2.0=testRuntimeClasspath -com.squareup.okio:okio:1.17.5=compileClasspath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath -com.squareup.okio:okio:3.2.0=testRuntimeClasspath -com.sun.activation:jakarta.activation:1.2.1=muleServices -com.sun.activation:jakarta.activation:1.2.2=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.sun.activation:javax.activation:1.2.0=muleServices -com.sun.mail:jakarta.mail:1.6.3=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.sun.mail:jakarta.mail:1.6.7=muleServices -com.sun.mail:mailapi:1.6.4=muleServices -com.sun.xml.bind:jaxb-impl:2.3.8=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.thoughtworks.qdox:qdox:1.12.1=testRuntimeClasspath -com.typesafe:config:1.3.1=testCompileClasspath,testRuntimeClasspath -com.vdurmont:semver4j:3.1.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.zaxxer:HikariCP-java7:2.4.13=muleServices -commons-beanutils:commons-beanutils:1.9.4=compileClasspath,testCompileClasspath,testRuntimeClasspath -commons-cli:commons-cli:1.2=testCompileClasspath,testRuntimeClasspath -commons-codec:commons-codec:1.11=testCompileClasspath +com.squareup.okio:okio-jvm:3.6.0=mule46ForkedTestRuntimeClasspath +com.squareup.okio:okio-jvm:3.9.0=latestDepForkedTestRuntimeClasspath +com.squareup.okio:okio:1.17.5=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,mule46ForkedTestCompileClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath +com.squareup.okio:okio:3.2.0=mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +com.squareup.okio:okio:3.6.0=latestDepForkedTestRuntimeClasspath +com.sun.activation:jakarta.activation:1.2.1=mule46Services,muleServices +com.sun.activation:jakarta.activation:1.2.2=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.sun.activation:javax.activation:1.2.0=mule46Services,muleServices +com.sun.mail:jakarta.mail:1.6.3=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.sun.mail:jakarta.mail:1.6.7=latestMuleServices,mule46Services,muleServices +com.sun.mail:mailapi:1.6.4=mule46Services,muleServices +com.sun.xml.bind:jaxb-core:2.3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.sun.xml.bind:jaxb-impl:2.3.8=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.thoughtworks.qdox:qdox:1.12.1=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +com.typesafe:config:1.3.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.typesafe:config:1.4.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +com.vdurmont:semver4j:3.1.0=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +com.zaxxer:HikariCP-java7:2.4.13=latestMuleServices,mule46Services,muleServices +commons-beanutils:commons-beanutils:1.9.4=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-cli:commons-cli:1.2=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-cli:commons-cli:1.8.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +commons-codec:commons-codec:1.11=latestDepForkedTestCompileClasspath,mule46ForkedTestCompileClasspath,testCompileClasspath commons-codec:commons-codec:1.15=spotbugs -commons-codec:commons-codec:1.16.0=testRuntimeClasspath -commons-collections:commons-collections:3.2.2=muleServices -commons-digester:commons-digester:2.1=muleServices -commons-fileupload:commons-fileupload:1.5=testCompileClasspath,testRuntimeClasspath -commons-io:commons-io:2.11.0=muleServices -commons-io:commons-io:2.13.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -commons-lang:commons-lang:2.6=compileClasspath,testCompileClasspath,testRuntimeClasspath -commons-logging:commons-logging:1.2=muleServices -commons-validator:commons-validator:1.7=muleServices +commons-codec:commons-codec:1.16.0=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +commons-codec:commons-codec:1.17.1=latestMuleServices +commons-collections:commons-collections:3.2.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46Services,muleServices +commons-digester:commons-digester:2.1=latestMuleServices,mule46Services,muleServices +commons-fileupload:commons-fileupload:1.5=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-io:commons-io:2.11.0=mule46Services,muleServices +commons-io:commons-io:2.13.0=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-io:commons-io:2.16.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices +commons-lang:commons-lang:2.6=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-logging:commons-logging:1.2=mule46Services,muleServices +commons-validator:commons-validator:1.7=latestMuleServices,mule46Services,muleServices de.thetaphi:forbiddenapis:3.1=compileClasspath -info.picocli:picocli:4.6.3=testRuntimeClasspath -io.helidon.grpc:io.grpc:2.6.1=testCompileClasspath,testRuntimeClasspath +eu.agno3.jcifs:jcifs-ng:2.1.10=latestMuleServices +info.picocli:picocli:4.6.3=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +io.grpc:grpc-api:1.66.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +io.grpc:grpc-context:1.66.0=latestDepForkedTestRuntimeClasspath +io.grpc:grpc-core:1.66.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +io.helidon.grpc:io.grpc:2.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +io.netty:netty-buffer:4.1.114.Final=latestMuleServices +io.netty:netty-codec-dns:4.1.112.Final=latestMuleServices +io.netty:netty-codec-http2:4.1.114.Final=latestMuleServices +io.netty:netty-codec-http:4.1.114.Final=latestMuleServices +io.netty:netty-codec-socks:4.1.114.Final=latestMuleServices +io.netty:netty-codec:4.1.114.Final=latestMuleServices +io.netty:netty-common:4.1.114.Final=latestMuleServices +io.netty:netty-handler-proxy:4.1.114.Final=latestMuleServices +io.netty:netty-handler:4.1.114.Final=latestMuleServices +io.netty:netty-resolver-dns:4.1.112.Final=latestMuleServices +io.netty:netty-resolver:4.1.114.Final=latestMuleServices +io.netty:netty-transport-classes-epoll:4.1.112.Final=latestMuleServices +io.netty:netty-transport-native-epoll:4.1.112.Final=latestMuleServices +io.netty:netty-transport-native-unix-common:4.1.114.Final=latestMuleServices +io.netty:netty-transport:4.1.114.Final=latestMuleServices io.opentelemetry:opentelemetry-api-events:1.27.0-alpha=testRuntimeClasspath +io.opentelemetry:opentelemetry-api-events:1.31.0-alpha=mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-api-incubator:1.40.0-alpha=latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-api:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-api:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-api:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-context:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-context:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-context:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-exporter-common:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-common:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-common:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-exporter-logging:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-logging:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-logging:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-exporter-otlp-common:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-otlp-common:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-otlp-common:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-exporter-otlp:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-otlp:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-otlp:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-sender-okhttp:1.31.0=mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-exporter-sender-okhttp:1.40.0=latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-extension-incubator:1.27.0-alpha=testRuntimeClasspath +io.opentelemetry:opentelemetry-extension-incubator:1.31.0-alpha=mule46ForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-sdk-common:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-common:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-common:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.27.0=testRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.31.0=mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-sdk-logs:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-logs:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-logs:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-sdk-metrics:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-metrics:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-metrics:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-sdk-testing:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-testing:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-testing:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-sdk-trace:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-trace:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-sdk-trace:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-sdk:1.27.0=testCompileClasspath,testRuntimeClasspath +io.opentelemetry:opentelemetry-sdk:1.31.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +io.opentelemetry:opentelemetry-sdk:1.40.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath io.opentelemetry:opentelemetry-semconv:1.27.0-alpha=testRuntimeClasspath -io.perfmark:perfmark-api:0.25.0=testCompileClasspath,testRuntimeClasspath -io.projectreactor.addons:reactor-extra:3.4.8=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.projectreactor:reactor-core:3.4.22=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.sqreen:libsqreen:11.1.0=testRuntimeClasspath -it.unimi.dsi:fastutil:8.5.11=testCompileClasspath,testRuntimeClasspath -jakarta.activation:jakarta.activation-api:1.2.2=testCompileClasspath,testRuntimeClasspath -jakarta.annotation:jakarta.annotation-api:1.3.5=compileClasspath,testCompileClasspath,testRuntimeClasspath -jakarta.jms:jakarta.jms-api:2.0.3=compileClasspath,testCompileClasspath,testRuntimeClasspath -jakarta.jws:jakarta.jws-api:1.1.1=testCompileClasspath -jakarta.jws:jakarta.jws-api:2.1.0=testRuntimeClasspath -jakarta.resource:jakarta.resource-api:1.7.4=testCompileClasspath,testRuntimeClasspath -jakarta.transaction:jakarta.transaction-api:1.3.3=compileClasspath,testCompileClasspath,testRuntimeClasspath -jakarta.xml.bind:jakarta.xml.bind-api:2.3.3=compileClasspath,testCompileClasspath,testRuntimeClasspath -jakarta.xml.soap:jakarta.xml.soap-api:1.4.2=testCompileClasspath,testRuntimeClasspath -jakarta.xml.ws:jakarta.xml.ws-api:2.3.3=testCompileClasspath,testRuntimeClasspath +io.perfmark:perfmark-api:0.25.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +io.perfmark:perfmark-api:0.27.0=latestDepForkedTestRuntimeClasspath +io.projectreactor.addons:reactor-extra:3.4.8=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +io.projectreactor.addons:reactor-extra:3.5.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +io.projectreactor.netty:reactor-netty-core:1.1.22=latestMuleServices +io.projectreactor.netty:reactor-netty-http:1.1.22=latestMuleServices +io.projectreactor:reactor-core:3.4.22=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +io.projectreactor:reactor-core:3.5.20=latestMuleServices +io.projectreactor:reactor-core:3.6.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +io.sqreen:libsqreen:11.2.0=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +it.unimi.dsi:fastutil:8.5.11=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +it.unimi.dsi:fastutil:8.5.14=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +jakarta.activation:jakarta.activation-api:1.2.2=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.activation:jakarta.activation-api:2.1.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +jakarta.annotation:jakarta.annotation-api:1.3.5=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.inject:jakarta.inject-api:1.0.5=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +jakarta.jms:jakarta.jms-api:2.0.3=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.jws:jakarta.jws-api:1.1.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,testCompileClasspath +jakarta.jws:jakarta.jws-api:2.1.0=mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +jakarta.resource:jakarta.resource-api:1.7.4=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.transaction:jakarta.transaction-api:1.3.3=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.xml.bind:jakarta.xml.bind-api:2.3.3=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +jakarta.xml.soap:jakarta.xml.soap-api:1.4.2=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.xml.soap:jakarta.xml.soap-api:3.0.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +jakarta.xml.ws:jakarta.xml.ws-api:2.3.3=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +jakarta.xml.ws:jakarta.xml.ws-api:4.0.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath javax.inject:javax.inject:1=compileClasspath,testCompileClasspath,testRuntimeClasspath -javax.servlet:javax.servlet-api:3.1.0=testCompileClasspath,testRuntimeClasspath -javax.validation:validation-api:1.1.0.Final=compileClasspath,testCompileClasspath,testRuntimeClasspath +javax.servlet:javax.servlet-api:3.1.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +javax.validation:validation-api:1.1.0.Final=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +javax.xml.bind:jaxb-api:2.2.12=mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +javax.xml.bind:jaxb-api:2.3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +javax.xml.stream:stax-api:1.0-2=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +jaxen:jaxen:1.1.6=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath jaxen:jaxen:1.2.0=spotbugs -jline:jline:2.14.6=testRuntimeClasspath -joda-time:joda-time:2.10.2=muleServices +jline:jline:2.14.6=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +joda-time:joda-time:2.10.2=latestMuleServices,mule46Services,muleServices +joda-time:joda-time:2.12.5=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +joda-time:joda-time:2.12.7=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath joda-time:joda-time:2.9.1=compileClasspath,testCompileClasspath,testRuntimeClasspath -junit:junit-dep:4.11=testCompileClasspath,testRuntimeClasspath -junit:junit:4.13.2=testCompileClasspath,testRuntimeClasspath -net.bytebuddy:byte-buddy-agent:1.14.18=compileClasspath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -net.bytebuddy:byte-buddy:1.14.18=compileClasspath,instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -net.java.dev.jna:jna-platform:5.8.0=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -net.java.dev.jna:jna:5.8.0=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath -net.jcip:jcip-annotations:1.0=compileClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath -net.jodah:failsafe:2.1.1=compileClasspath,testCompileClasspath,testRuntimeClasspath -net.sf.jopt-simple:jopt-simple:5.0.3=compileClasspath,testCompileClasspath,testRuntimeClasspath +junit:junit-dep:4.11=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +junit:junit:4.13.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +net.bytebuddy:byte-buddy-agent:1.14.18=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +net.bytebuddy:byte-buddy:1.14.18=compileClasspath,instrumentPluginClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +net.java.dev.jna:jna-platform:5.8.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +net.java.dev.jna:jna:5.8.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +net.java.dev.msv:xsdlib:2013.6.1=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +net.jcip:jcip-annotations:1.0=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath +net.jodah:failsafe:2.1.1=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +net.jodah:failsafe:2.4.4=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +net.sf.jopt-simple:jopt-simple:5.0.3=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath net.sf.saxon:Saxon-HE:11.4=spotbugs -org.antlr:antlr-runtime:3.5.2=testCompileClasspath,testRuntimeClasspath -org.apache.ant:ant-antlr:1.10.12=testRuntimeClasspath +org.antlr:antlr-runtime:3.5.2=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.antlr:antlr-runtime:3.5.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.apache.ant:ant-antlr:1.10.12=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath org.apache.ant:ant-antlr:1.9.15=codenarc -org.apache.ant:ant-junit:1.10.12=testRuntimeClasspath +org.apache.ant:ant-junit:1.10.12=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath org.apache.ant:ant-junit:1.9.15=codenarc -org.apache.ant:ant-launcher:1.10.12=testRuntimeClasspath -org.apache.ant:ant:1.10.12=testCompileClasspath,testRuntimeClasspath -org.apache.avro:avro:1.11.1=muleServices +org.apache.ant:ant-launcher:1.10.12=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +org.apache.ant:ant:1.10.12=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.avro:avro:1.11.1=mule46Services,muleServices +org.apache.avro:avro:1.11.4=latestMuleServices org.apache.bcel:bcel:6.5.0=spotbugs -org.apache.commons:commons-collections4:4.4=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.apache.commons:commons-compress:1.21=muleServices -org.apache.commons:commons-lang3:3.12.0=compileClasspath,muleServices,spotbugs,testCompileClasspath,testRuntimeClasspath -org.apache.commons:commons-pool2:2.11.1=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.commons:commons-collections4:4.4=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.commons:commons-compress:1.21=mule46Services,muleServices +org.apache.commons:commons-compress:1.26.2=latestMuleServices +org.apache.commons:commons-lang3:3.12.0=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,mule46Services,muleServices,spotbugs,testCompileClasspath,testRuntimeClasspath +org.apache.commons:commons-lang3:3.16.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices +org.apache.commons:commons-pool2:2.11.1=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.commons:commons-pool2:2.12.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.apache.commons:commons-text:1.10.0=spotbugs -org.apache.commons:commons-text:1.3=muleServices -org.apache.geronimo.specs:geronimo-servlet_3.0_spec:1.0=muleServices +org.apache.commons:commons-text:1.12.0=latestMuleServices +org.apache.commons:commons-text:1.3=mule46Services,muleServices +org.apache.geronimo.specs:geronimo-servlet_3.0_spec:1.0=mule46Services,muleServices org.apache.httpcomponents.client5:httpclient5:5.1.3=spotbugs org.apache.httpcomponents.core5:httpcore5-h2:5.1.3=spotbugs org.apache.httpcomponents.core5:httpcore5:5.1.3=spotbugs -org.apache.httpcomponents:httpclient:4.5.14=testCompileClasspath,testRuntimeClasspath -org.apache.httpcomponents:httpcore:4.4.16=testCompileClasspath,testRuntimeClasspath -org.apache.logging.log4j:log4j-1.2-api:2.20.0=testCompileClasspath,testRuntimeClasspath +org.apache.httpcomponents:httpclient:4.5.14=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.httpcomponents:httpcore:4.4.16=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.logging.log4j:log4j-1.2-api:2.20.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.logging.log4j:log4j-1.2-api:2.24.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.apache.logging.log4j:log4j-api:2.19.0=spotbugs -org.apache.logging.log4j:log4j-api:2.20.0=testCompileClasspath,testRuntimeClasspath +org.apache.logging.log4j:log4j-api:2.20.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.logging.log4j:log4j-api:2.24.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.apache.logging.log4j:log4j-core:2.19.0=spotbugs -org.apache.logging.log4j:log4j-core:2.20.0=testCompileClasspath,testRuntimeClasspath +org.apache.logging.log4j:log4j-core:2.20.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.logging.log4j:log4j-core:2.24.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.apache.logging.log4j:log4j-slf4j2-impl:2.20.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.logging.log4j:log4j-slf4j2-impl:2.24.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-api:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-api:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-connector-basic:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-impl:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-impl:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-named-locks:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-named-locks:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-spi:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-spi:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-supplier:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-supplier:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-transport-file:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-transport-file:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-transport-http:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-transport-http:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-transport-wagon:1.9.15=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-transport-wagon:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.apache.maven.resolver:maven-resolver-util:1.9.15=testCompileClasspath,testRuntimeClasspath -org.apache.maven.wagon:wagon-http-shared:3.4.2=testCompileClasspath,testRuntimeClasspath -org.apache.maven.wagon:wagon-http:3.4.2=testCompileClasspath,testRuntimeClasspath -org.apache.maven.wagon:wagon-provider-api:3.4.2=testCompileClasspath,testRuntimeClasspath +org.apache.maven.resolver:maven-resolver-util:1.9.18=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.apache.maven.wagon:wagon-http-shared:3.4.2=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.maven.wagon:wagon-http-shared:3.5.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.apache.maven.wagon:wagon-http:3.4.2=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.maven.wagon:wagon-http:3.5.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.apache.maven.wagon:wagon-provider-api:3.4.2=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.maven.wagon:wagon-provider-api:3.5.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.apache.maven:maven-builder-support:3.9.4=testCompileClasspath,testRuntimeClasspath -org.apache.maven:maven-resolver-provider:3.9.4=testCompileClasspath,testRuntimeClasspath +org.apache.maven:maven-builder-support:3.9.6=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.apache.maven:maven-builder-support:3.9.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.apache.maven:maven-resolver-provider:3.9.4=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.apache.maven:maven-settings-builder:3.9.4=testCompileClasspath,testRuntimeClasspath +org.apache.maven:maven-settings-builder:3.9.6=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.apache.maven:maven-settings-builder:3.9.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.apache.maven:maven-settings:3.9.4=testCompileClasspath,testRuntimeClasspath -org.apache.ws.xmlschema:xmlschema-core:2.2.1=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.apache.xmlbeans:xmlbeans:3.1.0=compileClasspath,muleServices,testCompileClasspath,testRuntimeClasspath -org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:2.5.2=annotationProcessor,testAnnotationProcessor -org.checkerframework:checker-qual:3.10.0=muleServices +org.apache.maven:maven-settings:3.9.6=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.apache.maven:maven-settings:3.9.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.apache.ws.xmlschema:xmlschema-core:2.2.1=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.apache.xmlbeans:xmlbeans:3.1.0=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,mule46Services,muleServices,testCompileClasspath,testRuntimeClasspath +org.apiguardian:apiguardian-api:1.1.2=latestDepForkedTestCompileClasspath,mule46ForkedTestCompileClasspath,testCompileClasspath +org.bouncycastle:bcprov-jdk18on:1.76=latestMuleServices +org.checkerframework:checker-qual:2.5.2=annotationProcessor,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,testAnnotationProcessor +org.checkerframework:checker-qual:3.10.0=mule46Services,muleServices org.checkerframework:checker-qual:3.33.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-all:3.0.17=testCompileClasspath,testRuntimeClasspath +org.checkerframework:checker-qual:3.37.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.checkerframework:checker-qual:3.42.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices +org.codehaus.groovy:groovy-all:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy-ant:2.5.14=codenarc -org.codehaus.groovy:groovy-ant:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-astbuilder:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-cli-picocli:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-console:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-datetime:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-docgenerator:3.0.17=testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-ant:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-astbuilder:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-cli-picocli:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-console:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-datetime:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-docgenerator:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy-groovydoc:2.5.14=codenarc -org.codehaus.groovy:groovy-groovydoc:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-groovysh:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-jmx:3.0.17=testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-groovydoc:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-groovysh:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-jmx:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy-json:2.5.14=codenarc -org.codehaus.groovy:groovy-json:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-jsr223:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-macro:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-nio:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-servlet:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-sql:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-swing:3.0.17=testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-json:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-jsr223:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-macro:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-nio:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-servlet:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-sql:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-swing:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy-templates:2.5.14=codenarc -org.codehaus.groovy:groovy-templates:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-test-junit5:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-test:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-testng:3.0.17=testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-templates:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-test-junit5:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-test:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-testng:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy-xml:2.5.14=codenarc -org.codehaus.groovy:groovy-xml:3.0.17=testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy-xml:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy:2.5.14=codenarc -org.codehaus.groovy:groovy:3.0.17=testCompileClasspath,testRuntimeClasspath -org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,testAnnotationProcessor -org.codehaus.plexus:plexus-cipher:2.0=testCompileClasspath,testRuntimeClasspath -org.codehaus.plexus:plexus-component-annotations:1.5.5=testCompileClasspath,testRuntimeClasspath -org.codehaus.plexus:plexus-interpolation:1.26=testCompileClasspath,testRuntimeClasspath -org.codehaus.plexus:plexus-sec-dispatcher:2.0=testCompileClasspath,testRuntimeClasspath +org.codehaus.groovy:groovy:3.0.17=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,latestDepForkedTestAnnotationProcessor,mule46ForkedTestAnnotationProcessor,testAnnotationProcessor +org.codehaus.plexus:plexus-cipher:2.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.plexus:plexus-component-annotations:1.5.5=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.plexus:plexus-interpolation:1.26=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.codehaus.plexus:plexus-interpolation:1.27=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.codehaus.plexus:plexus-sec-dispatcher:2.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.plexus:plexus-utils:3.5.1=testCompileClasspath,testRuntimeClasspath -org.codehaus.woodstox:stax2-api:4.2.1=muleServices +org.codehaus.plexus:plexus-utils:4.0.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.codehaus.plexus:plexus-utils:4.0.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.codehaus.plexus:plexus-xml:3.0.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.codehaus.plexus:plexus-xml:3.0.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.codehaus.woodstox:stax2-api:4.2.1=mule46Services,muleServices +org.codehaus.woodstox:stax2-api:4.2.2=latestMuleServices org.codenarc:CodeNarc:2.2.0=codenarc -org.dom4j:dom4j:2.1.3=spotbugs,testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-http:9.4.56.v20240826=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-io:9.4.56.v20240826=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-server:9.4.56.v20240826=testCompileClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-util:9.4.56.v20240826=testCompileClasspath,testRuntimeClasspath -org.eclipse.sisu:org.eclipse.sisu.inject:0.3.5=testCompileClasspath,testRuntimeClasspath -org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.5=testCompileClasspath,testRuntimeClasspath -org.everit.json:org.everit.json.schema:1.5.1=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.glassfish:jakarta.json:1.1.6=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.dom4j:dom4j:2.1.3=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath +org.dom4j:dom4j:2.1.4=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.eclipse.jetty:jetty-http:9.4.56.v20240826=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.jetty:jetty-io:9.4.56.v20240826=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.jetty:jetty-server:9.4.56.v20240826=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.jetty:jetty-util:9.4.56.v20240826=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.sisu:org.eclipse.sisu.inject:0.3.5=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.5=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.everit.json:org.everit.json.schema:1.5.1=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.glassfish:jakarta.json:1.1.6=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.gmetrics:GMetrics:1.1=codenarc -org.graalvm.js:js-scriptengine:21.0.0.2=muleServices -org.graalvm.js:js:21.0.0.2=muleServices -org.graalvm.regex:regex:21.0.0.2=muleServices -org.graalvm.sdk:graal-sdk:21.0.0.2=muleServices -org.graalvm.truffle:truffle-api:21.0.0.2=muleServices -org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath -org.hamcrest:hamcrest:2.2=testCompileClasspath,testRuntimeClasspath -org.jctools:jctools-core:3.3.0=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.graalvm.js:js-scriptengine:21.0.0.2=mule46Services,muleServices +org.graalvm.js:js-scriptengine:22.3.5=latestMuleServices +org.graalvm.js:js:21.0.0.2=mule46Services,muleServices +org.graalvm.js:js:22.3.5=latestMuleServices +org.graalvm.regex:regex:21.0.0.2=mule46Services,muleServices +org.graalvm.regex:regex:22.3.5=latestMuleServices +org.graalvm.sdk:graal-sdk:21.0.0.2=mule46Services,muleServices +org.graalvm.sdk:graal-sdk:22.3.5=latestMuleServices +org.graalvm.truffle:truffle-api:21.0.0.2=mule46Services,muleServices +org.graalvm.truffle:truffle-api:22.3.5=latestMuleServices +org.hamcrest:hamcrest-core:1.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.hamcrest:hamcrest:2.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jctools:jctools-core:3.3.0=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20=testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10=mule46ForkedTestRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.20=testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21=latestDepForkedTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10=mule46ForkedTestRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20=testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21=latestDepForkedTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10=mule46ForkedTestRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib:1.6.20=testRuntimeClasspath -org.jetbrains:annotations:13.0=testRuntimeClasspath -org.jgrapht:jgrapht-core:1.3.1=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.jheaps:jheaps:0.10=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:1.9.10=mule46ForkedTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:1.9.21=latestDepForkedTestRuntimeClasspath +org.jetbrains:annotations:13.0=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +org.jgrapht:jgrapht-core:1.3.1=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jheaps:jheaps:0.10=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.json:json:20160810=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.json:json:20230227=muleServices -org.jsoup:jsoup:1.15.3=testCompileClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-api:5.9.2=testCompileClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-engine:5.9.2=testRuntimeClasspath -org.junit.platform:junit-platform-commons:1.9.0=testCompileClasspath -org.junit.platform:junit-platform-commons:1.9.2=testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.9.0=testCompileClasspath -org.junit.platform:junit-platform-engine:1.9.2=testRuntimeClasspath -org.junit.platform:junit-platform-launcher:1.9.2=testRuntimeClasspath -org.junit.platform:junit-platform-runner:1.9.0=testRuntimeClasspath -org.junit.platform:junit-platform-suite-api:1.9.0=testRuntimeClasspath -org.junit.platform:junit-platform-suite-commons:1.9.0=testRuntimeClasspath -org.junit:junit-bom:5.9.0=testCompileClasspath,testRuntimeClasspath +org.json:json:20230227=mule46Services,muleServices +org.json:json:20231013=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.jsoup:jsoup:1.15.3=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jsoup:jsoup:1.18.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.junit.jupiter:junit-jupiter-api:5.9.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-engine:5.9.2=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-commons:1.9.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.9.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-launcher:1.9.2=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-runner:1.9.2=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-suite-api:1.9.2=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-suite-commons:1.9.2=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath org.junit:junit-bom:5.9.1=spotbugs -org.mozilla:rhino:1.7.12=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.mule.apache:xerces2-xsd11:2.11.3=muleServices +org.junit:junit-bom:5.9.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.mozilla:rhino:1.7.12=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.mozilla:rhino:1.7.15=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.apache:xerces2-xsd11:2.11.3=mule46Services,muleServices org.mule.apache:xerces2-xsd11:2.11.3-MULE-001=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.mule.com.github.stephenc.eaio-uuid:uuid:3.4.2-MULE-001=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.mule.common:scala-common_2.12:2.0.99=muleServices +org.mule.apache:xerces2-xsd11:2.11.3-MULE-002=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.com.github.stephenc.eaio-uuid:uuid:3.4.2-MULE-001=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.common:scala-common_2.12:2.0.99=latestMuleServices,mule46Services,muleServices org.mule.commons:mule-oauth-client-api:2.0.0=testCompileClasspath,testRuntimeClasspath -org.mule.glassfish.grizzly:connection-pool:2.3.36-MULE-025=muleServices -org.mule.glassfish.grizzly:grizzly-framework:2.3.36-MULE-008=muleServices -org.mule.glassfish.grizzly:grizzly-http-client:1.14-MULE-021=muleServices -org.mule.glassfish.grizzly:grizzly-http-server:2.3.36-MULE-025=muleServices -org.mule.glassfish.grizzly:grizzly-http-servlet:2.3.36-MULE-025=muleServices -org.mule.glassfish.grizzly:grizzly-http:2.3.36-MULE-008=muleServices -org.mule.glassfish.grizzly:grizzly-websockets:2.3.36-MULE-025=muleServices -org.mule.mvel:mule-mvel2:2.1.9-MULE-020=testCompileClasspath,testRuntimeClasspath +org.mule.commons:mule-oauth-client-api:2.1.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.commons:mule-oauth-client-api:2.3.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.glassfish.grizzly:connection-pool:2.3.36-MULE-025=mule46Services,muleServices +org.mule.glassfish.grizzly:connection-pool:2.3.36-MULE-026=latestMuleServices +org.mule.glassfish.grizzly:grizzly-framework:2.3.36-MULE-008=latestMuleServices,mule46Services,muleServices +org.mule.glassfish.grizzly:grizzly-http-client:1.14-MULE-021=mule46Services,muleServices +org.mule.glassfish.grizzly:grizzly-http-client:1.14-MULE-025=latestMuleServices +org.mule.glassfish.grizzly:grizzly-http-server:2.3.36-MULE-025=mule46Services,muleServices +org.mule.glassfish.grizzly:grizzly-http-server:2.3.36-MULE-026=latestMuleServices +org.mule.glassfish.grizzly:grizzly-http-servlet:2.3.36-MULE-025=mule46Services,muleServices +org.mule.glassfish.grizzly:grizzly-http-servlet:2.3.36-MULE-026=latestMuleServices +org.mule.glassfish.grizzly:grizzly-http:2.3.36-MULE-008=latestMuleServices,mule46Services,muleServices +org.mule.glassfish.grizzly:grizzly-websockets:2.3.36-MULE-025=mule46Services,muleServices +org.mule.glassfish.grizzly:grizzly-websockets:2.3.36-MULE-026=latestMuleServices +org.mule.mvel:mule-mvel2:2.1.9-MULE-020=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime.boot:mule-module-boot-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime.boot:mule-module-jpms-utils:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime.boot:mule-module-log4j-boot-configurator:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime.boot:mule-module-logging:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:api-annotations:1.4.1=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:api-annotations:1.5.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:api-annotations:1.7.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-api:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-api:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-api:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-artifact-ast-dependency-graph:1.1.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-artifact-ast-dependency-graph:1.2.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-artifact-ast-dependency-graph:1.4.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-artifact-ast-serialization:1.1.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-artifact-ast-serialization:1.2.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-artifact-ast-serialization:1.4.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-artifact-ast-xml-parser:1.1.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-artifact-ast-xml-parser:1.2.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-artifact-ast-xml-parser:1.4.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-artifact-ast:1.1.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-artifact-ast:1.2.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-artifact-ast:1.4.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-artifact-declaration-persistence:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-artifact-declaration-persistence:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-artifact-declaration-persistence:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-artifact-declaration:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-artifact-declaration:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-artifact-declaration:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-core-components:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-core-components:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-core-components:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-core-mvel:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-core-mvel:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.mule.runtime:mule-core:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.mule.runtime:mule-dwb-api:2.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-core:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-core:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime:mule-dwb-api:2.5.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.mule.runtime:mule-extensions-api-dsql:1.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-extensions-api-dsql:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-extensions-api-dsql:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-extensions-api-persistence:1.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-extensions-api-persistence:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-extensions-api-persistence:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-extensions-api:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-extensions-api:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-extensions-api:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime:mule-extensions-mime-types:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-extensions-mime-types:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-extensions-soap-api:1.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-extensions-soap-api:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-extensions-soap-api:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-jar-handling-utils:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-jar-handling-utils:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-jar-handling-utils:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-message-metadata-model:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-message-metadata-model:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-message-metadata-model:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metadata-model-api:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metadata-model-api:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metadata-model-api:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metadata-model-catalog:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metadata-model-catalog:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metadata-model-catalog:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metadata-model-java:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metadata-model-java:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metadata-model-java:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metadata-model-json:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metadata-model-json:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metadata-model-json:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metadata-model-persistence:1.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metadata-model-persistence:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metadata-model-persistence:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metadata-model-raml:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metadata-model-raml:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metadata-model-raml:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metadata-model-xml:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metadata-model-xml:1.6.1=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metadata-model-xml:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metrics-api:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metrics-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metrics-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metrics-exporter-api:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metrics-exporter-configuration-api:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-configuration-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-configuration-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metrics-exporter-configuration-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-configuration-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-configuration-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metrics-exporter-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metrics-exporter-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-metrics-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-metrics-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-metrics-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-artifact-activation:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-artifact-activation:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-artifact-activation:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-artifact:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-artifact:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-artifact:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime:mule-module-boot-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.mule.runtime:mule-module-container:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-container:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-container:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-deployment-model-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-deployment-model-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-deployment-model-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-deployment-model:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-deployment-model:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-deployment-model:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-deployment:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-deployment:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-deployment:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-dsl-api:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-dsl-api:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-dsl-api:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-extensions-soap-support:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-extensions-soap-support:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-extensions-soap-support:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-extensions-spring-support:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-extensions-spring-support:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-extensions-spring-support:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-extensions-support:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-extensions-support:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-extensions-support:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-extensions-xml-support:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-extensions-xml-support:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-extensions-xml-support:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-feature-management:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-feature-management:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-feature-management:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-global-config:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-global-config:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-global-config:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-http-policy-api:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-http-policy-api:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-http-policy-api:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-javaee:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-javaee:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-javaee:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-jpms-utils:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-jpms-utils:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.mule.runtime:mule-module-launcher:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-launcher:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-launcher:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-license-api:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-license-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-license-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-log4j-boot-configurator:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-log4j-boot-configurator:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.mule.runtime:mule-module-log4j-configurator:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-log4j-configurator:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-log4j-configurator:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-logging:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-logging:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath org.mule.runtime:mule-module-memory-management:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-memory-management:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-memory-management:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-metadata-support:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-metadata-support:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-metadata-support:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime:mule-module-observability:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-observability:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-policy-api:1.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-policy-api:1.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-policy-api:1.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-properties-config:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-properties-config:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-properties-config:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-reboot:4.5.0=testCompileClasspath,testRuntimeClasspath org.mule.runtime:mule-module-repository:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-repository:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-repository:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-service:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-service:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-service:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-spring-config:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-spring-config:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-spring-config:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-tls:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-tls:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-tls:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-tooling-support:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-tooling-support:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-tooling-support:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-module-troubleshooting:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-module-troubleshooting:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-module-troubleshooting:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-profiling-api:1.1.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-profiling-api:1.2.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-profiling-api:1.4.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-properties-api:1.1.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-properties-api:1.2.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-properties-api:1.4.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime:mule-runtime-errors:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-runtime-extension-model:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-runtime-extension-model:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-runtime-extension-model:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-service-http-api:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-service-http-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-service-http-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-service-oauth-api:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-service-oauth-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-service-oauth-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-service-soap-api:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-service-soap-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-service-soap-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-api:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-common:4.5.0=testCompileClasspath,testRuntimeClasspath -org.mule.runtime:mule-tracer-configuration-api:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-common:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-common:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-configuration-api:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-configuration-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-configuration-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-configuration-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-configuration-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-configuration-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-customization-api:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.mule.runtime:mule-tracer-customization-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-customization-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-customization-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-customization-impl:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-customization-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-customization-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-exporter-api:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-exporter-configuration-api:4.5.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-configuration-api:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-configuration-api:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-exporter-configuration-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-configuration-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-configuration-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-exporter-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-exporter-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.runtime:mule-tracer-internal-impl:4.5.0=testCompileClasspath,testRuntimeClasspath +org.mule.runtime:mule-tracer-internal-impl:4.6.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.runtime:mule-tracer-internal-impl:4.8.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.sdk:mule-sdk-api:0.10.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.sdk:mule-sdk-api:0.7.0=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.sdk:mule-sdk-api:0.8.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.sdk:mule-sdk-compatibility-api:0.10.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule.sdk:mule-sdk-compatibility-api:0.7.0=testCompileClasspath,testRuntimeClasspath -org.mule.services:mule-service-http:1.5.21=muleServices -org.mule.services:mule-service-scheduler:1.5.0=muleServices -org.mule.services:mule-service-weave:2.5.0=muleServices -org.mule.syaml:syaml_2.12:2.0.334=muleServices -org.mule.tools.maven:mule-classloader-model:3.8.5=testCompileClasspath,testRuntimeClasspath -org.mule.weave:avro-module:2.5.0=muleServices -org.mule.weave:core-modules:2.5.0=muleServices -org.mule.weave:core:2.5.0=muleServices -org.mule.weave:debugger:2.5.0=muleServices -org.mule.weave:dwb-api:2.5.0=testCompileClasspath,testRuntimeClasspath -org.mule.weave:dwb-module:2.5.0=muleServices -org.mule.weave:java-module:2.5.0=muleServices -org.mule.weave:jsonschema-module:2.5.0=muleServices -org.mule.weave:ndjson-module:2.5.0=muleServices -org.mule.weave:parser:2.5.0=muleServices -org.mule.weave:runtime:2.5.0=muleServices -org.mule.weave:wlang:2.5.0=muleServices -org.mule.weave:xmlschema-module:2.5.0=muleServices -org.mule.weave:yaml-module:2.5.0=muleServices +org.mule.sdk:mule-sdk-compatibility-api:0.8.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule.services:mule-netty-http-service:0.1.1=latestMuleServices +org.mule.services:mule-service-http:1.10.1=latestMuleServices +org.mule.services:mule-service-http:1.5.21=mule46Services,muleServices +org.mule.services:mule-service-scheduler:1.5.0=mule46Services,muleServices +org.mule.services:mule-service-scheduler:1.8.1=latestMuleServices +org.mule.services:mule-service-weave:2.5.0=mule46Services,muleServices +org.mule.services:mule-service-weave:2.8.1=latestMuleServices +org.mule.syaml:syaml_2.12:2.0.334=latestMuleServices,mule46Services,muleServices +org.mule.tools.maven:mule-classloader-model:3.8.5=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.tools.maven:mule-classloader-model:4.2.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.mule.weave:avro-module:2.5.0=mule46Services,muleServices +org.mule.weave:avro-module:2.8.1-20241101=latestMuleServices +org.mule.weave:cache-service:2.8.1-20241101=latestMuleServices +org.mule.weave:caffeine-cache-service:2.8.1-20241101=latestMuleServices +org.mule.weave:core-modules:2.5.0=mule46Services,muleServices +org.mule.weave:core-modules:2.8.1-20241101=latestMuleServices +org.mule.weave:core:2.5.0=mule46Services,muleServices +org.mule.weave:core:2.8.1-20241101=latestMuleServices +org.mule.weave:debugger:2.5.0=mule46Services,muleServices +org.mule.weave:debugger:2.8.1-20241101=latestMuleServices +org.mule.weave:dwb-api:2.5.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.mule.weave:dwb-module:2.5.0=mule46Services,muleServices +org.mule.weave:dwb-module:2.8.1-20241101=latestMuleServices +org.mule.weave:java-module:2.5.0=mule46Services,muleServices +org.mule.weave:java-module:2.8.1-20241101=latestMuleServices +org.mule.weave:jsonschema-module:2.5.0=mule46Services,muleServices +org.mule.weave:jsonschema-module:2.8.1-20241101=latestMuleServices +org.mule.weave:metadata-api:2.8.1-20241101=latestMuleServices +org.mule.weave:ndjson-module:2.5.0=mule46Services,muleServices +org.mule.weave:ndjson-module:2.8.1-20241101=latestMuleServices +org.mule.weave:parser:2.5.0=mule46Services,muleServices +org.mule.weave:parser:2.8.1-20241101=latestMuleServices +org.mule.weave:runtime:2.5.0=mule46Services,muleServices +org.mule.weave:runtime:2.8.1-20241101=latestMuleServices +org.mule.weave:wlang:2.5.0=mule46Services,muleServices +org.mule.weave:wlang:2.8.1-20241101=latestMuleServices +org.mule.weave:xmlschema-module:2.5.0=mule46Services,muleServices +org.mule.weave:xmlschema-module:2.8.1-20241101=latestMuleServices +org.mule.weave:yaml-module:2.5.0=mule46Services,muleServices +org.mule.weave:yaml-module:2.8.1-20241101=latestMuleServices org.mule:maven-model-shaded:2.0.0=testCompileClasspath,testRuntimeClasspath +org.mule:maven-model-shaded:2.1.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule:maven-model-shaded:2.3.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule:mule-maven-client-api:2.0.0=testCompileClasspath,testRuntimeClasspath +org.mule:mule-maven-client-api:2.1.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule:mule-maven-client-api:2.3.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule:mule-maven-client-impl:2.0.0=testCompileClasspath,testRuntimeClasspath +org.mule:mule-maven-client-impl:2.1.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule:mule-maven-client-impl:2.3.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule:mule-maven-pom-parser-api:2.0.0=testCompileClasspath,testRuntimeClasspath +org.mule:mule-maven-pom-parser-api:2.1.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule:mule-maven-pom-parser-api:2.3.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.mule:mule-maven-pom-parser-impl:2.0.0=testCompileClasspath,testRuntimeClasspath -org.objenesis:objenesis:3.3=testCompileClasspath,testRuntimeClasspath -org.opentest4j:opentest4j:1.2.0=testCompileClasspath,testRuntimeClasspath -org.ow2.asm:asm-analysis:9.2=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.mule:mule-maven-pom-parser-impl:2.1.0=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.mule:mule-maven-pom-parser-impl:2.3.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.objenesis:objenesis:3.3=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.opentest4j:opentest4j:1.2.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.ow2.asm:asm-analysis:9.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm-analysis:9.4=spotbugs -org.ow2.asm:asm-commons:9.2=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-commons:9.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm-commons:9.4=spotbugs -org.ow2.asm:asm-tree:9.2=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm-tree:9.4=spotbugs -org.ow2.asm:asm-util:9.2=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-util:9.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm-util:9.4=spotbugs -org.ow2.asm:asm:9.2=instrumentPluginClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm:9.2=instrumentPluginClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm:9.4=spotbugs -org.parboiled:parboiled_2.12:2.1.8=muleServices -org.quartz-scheduler:quartz:2.3.2=muleServices +org.parboiled:parboiled_2.12:2.1.8=mule46Services,muleServices +org.parboiled:parboiled_2.12:2.5.1=latestMuleServices +org.quartz-scheduler:quartz:2.3.2=latestMuleServices,mule46Services,muleServices org.raml:raml-parser-2:1.0.44-10=compileClasspath,testCompileClasspath,testRuntimeClasspath +org.raml:raml-parser-2:1.0.44-12=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.raml:raml-parser-2:1.0.44-15=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath org.raml:yagi:1.0.44-10=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.reactivestreams:reactive-streams:1.0.4=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.reflections:reflections:0.9.10=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.scala-lang:scala-library:2.12.15=muleServices -org.slf4j:jcl-over-slf4j:2.0.7=testCompileClasspath,testRuntimeClasspath -org.slf4j:jul-to-slf4j:2.0.7=testCompileClasspath,testRuntimeClasspath -org.slf4j:log4j-over-slf4j:1.7.30=testCompileClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:1.7.30=compileClasspath,instrumentPluginClasspath,muleServices,muzzleBootstrap,muzzleTooling,runtimeClasspath,spotbugs,spotbugsSlf4j,testCompileClasspath,testRuntimeClasspath +org.raml:yagi:1.0.44-12=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath +org.raml:yagi:1.0.44-15=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.reactivestreams:reactive-streams:1.0.4=compileClasspath,latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestMuleServices,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.reflections:reflections:0.10.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.reflections:reflections:0.9.10=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.scala-lang:scala-library:2.12.15=latestMuleServices,mule46Services,muleServices +org.slf4j:jcl-over-slf4j:2.0.14=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.slf4j:jcl-over-slf4j:2.0.7=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:jul-to-slf4j:2.0.14=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.slf4j:jul-to-slf4j:2.0.7=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:log4j-over-slf4j:1.7.30=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.slf4j:slf4j-api:1.7.30=instrumentPluginClasspath,muzzleBootstrap,muzzleTooling,runtimeClasspath +org.slf4j:slf4j-api:1.7.36=latestMuleServices,mule46Services,muleServices +org.slf4j:slf4j-api:2.0.0=spotbugs,spotbugsSlf4j +org.slf4j:slf4j-api:2.0.16=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.slf4j:slf4j-api:2.0.7=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:slf4j-simple:2.0.0=spotbugsSlf4j -org.spockframework:spock-core:2.2-groovy-3.0=testCompileClasspath,testRuntimeClasspath -org.spockframework:spock-junit4:2.2-groovy-3.0=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-aop:5.3.27=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-beans:5.3.27=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-context:5.3.27=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-core:5.3.27=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-expression:5.3.27=testCompileClasspath,testRuntimeClasspath -org.springframework:spring-jcl:5.3.27=testCompileClasspath,testRuntimeClasspath -org.testng:testng:7.5=testRuntimeClasspath -org.togglz:togglz-core:3.0.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.typelevel:macro-compat_2.12:1.1.1=muleServices -org.vibur:vibur-object-pool:23.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.webjars:jquery:3.5.1=testRuntimeClasspath +org.spockframework:spock-core:2.2-groovy-3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.spockframework:spock-junit4:2.2-groovy-3.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-aop:5.3.27=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-aop:5.3.39=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.springframework:spring-beans:5.3.27=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-beans:5.3.39=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.springframework:spring-context:5.3.27=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-context:5.3.39=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.springframework:spring-core:5.3.27=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-core:5.3.39=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.springframework:spring-expression:5.3.27=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-expression:5.3.39=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.springframework:spring-jcl:5.3.27=mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.springframework:spring-jcl:5.3.39=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.testng:testng:7.5=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +org.togglz:togglz-core:3.0.0=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.togglz:togglz-core:3.2.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.typelevel:macro-compat_2.12:1.1.1=mule46Services,muleServices +org.vibur:vibur-object-pool:23.0=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.vibur:vibur-object-pool:25.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +org.webjars:jquery:3.5.1=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath org.xmlresolver:xmlresolver:4.4.3=spotbugs -org.yaml:snakeyaml:2.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -xml-apis:xml-apis:1.4.01=spotbugs,testCompileClasspath,testRuntimeClasspath -empty=spotbugsPlugins +org.yaml:snakeyaml:2.0=compileClasspath,mule46ForkedTestCompileClasspath,mule46ForkedTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.yaml:snakeyaml:2.2=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath +relaxngDatatype:relaxngDatatype:20020414=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +xml-apis:xml-apis:1.4.01=spotbugs +xpp3:xpp3:1.1.4c=latestDepForkedTestRuntimeClasspath,mule46ForkedTestRuntimeClasspath,testRuntimeClasspath +empty=latestDepTestAnnotationProcessor,latestDepTestCompileOnly,latestDepTestImplementation,latestDepTestRuntimeOnly,mule46TestAnnotationProcessor,mule46TestCompileOnly,mule46TestImplementation,mule46TestRuntimeOnly,spotbugsPlugins diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/gradle.lockfile b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/gradle.lockfile index 3cdda833eb5..f4abd4ac45b 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/gradle.lockfile +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/gradle.lockfile @@ -50,9 +50,9 @@ commons-io:commons-io:2.11.0=latestDepTestCompileClasspath,latestDepTestRuntimeC de.thetaphi:forbiddenapis:3.1=compileClasspath info.picocli:picocli:4.6.3=latestDepTestRuntimeClasspath,testRuntimeClasspath io.opentelemetry:opentelemetry-api:1.4.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.opentelemetry:opentelemetry-api:1.44.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.opentelemetry:opentelemetry-api:1.45.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.opentelemetry:opentelemetry-context:1.4.0=compileClasspath,testCompileClasspath,testRuntimeClasspath -io.opentelemetry:opentelemetry-context:1.44.1=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +io.opentelemetry:opentelemetry-context:1.45.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath io.sqreen:libsqreen:11.2.0=latestDepTestRuntimeClasspath,testRuntimeClasspath javax.servlet:javax.servlet-api:3.1.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath jaxen:jaxen:1.2.0=spotbugs diff --git a/dd-java-agent/instrumentation/redisson/redisson-3.10.3/gradle.lockfile b/dd-java-agent/instrumentation/redisson/redisson-3.10.3/gradle.lockfile index 882680b7092..84d0ce818d2 100644 --- a/dd-java-agent/instrumentation/redisson/redisson-3.10.3/gradle.lockfile +++ b/dd-java-agent/instrumentation/redisson/redisson-3.10.3/gradle.lockfile @@ -198,7 +198,7 @@ org.ow2.asm:asm:9.4=spotbugs org.reactivestreams:reactive-streams:1.0.2=compileClasspath,testCompileClasspath,testRuntimeClasspath org.reactivestreams:reactive-streams:1.0.4=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.redisson:redisson:3.10.3=compileClasspath,testCompileClasspath,testRuntimeClasspath -org.redisson:redisson:3.39.0=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +org.redisson:redisson:3.40.1=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath org.rnorth.duct-tape:duct-tape:1.0.8=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jcl-over-slf4j:1.7.30=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.slf4j:jul-to-slf4j:1.7.30=latestDepForkedTestCompileClasspath,latestDepForkedTestRuntimeClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java b/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java index 8f27ba741b0..5473d5d7a94 100644 --- a/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java +++ b/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java @@ -9,6 +9,7 @@ import datadog.trace.api.DDTags; import datadog.trace.api.GlobalTracer; import datadog.trace.api.gateway.Flow; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -39,6 +40,8 @@ public static boolean onEnter( Object spanAttr = request.getAttribute(DD_SPAN_ATTRIBUTE); final boolean hasServletTrace = spanAttr instanceof AgentSpan; if (hasServletTrace) { + final AgentSpan span = (AgentSpan) spanAttr; + ClassloaderServiceNames.maybeSetToSpan(span); // Tracing might already be applied by the FilterChain or a parent request (forward/include). return false; } diff --git a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java index 8171a5d5d4f..bc8ca7bb645 100644 --- a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java +++ b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java @@ -12,6 +12,7 @@ import datadog.trace.api.DDTags; import datadog.trace.api.GlobalTracer; import datadog.trace.api.gateway.Flow; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.instrumentation.servlet.ServletBlockingHelper; @@ -60,6 +61,8 @@ public static boolean onEnter( Object spanAttrValue = request.getAttribute(DD_SPAN_ATTRIBUTE); final boolean hasServletTrace = spanAttrValue instanceof AgentSpan; if (hasServletTrace) { + final AgentSpan span = (AgentSpan) spanAttrValue; + ClassloaderServiceNames.maybeSetToSpan(span); // Tracing might already be applied by other instrumentation, // the FilterChain or a parent request (forward/include). return false; diff --git a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java index 8d5744e3590..9b1f179200e 100644 --- a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java +++ b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.servlet3; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.URIDataAdapter; @@ -82,6 +83,7 @@ public AgentSpan onRequest( final HttpServletRequest request, AgentSpan.Context.Extracted context) { assert span != null; + ClassloaderServiceNames.maybeSetToSpan(span); if (request != null) { String contextPath = request.getContextPath(); String servletPath = request.getServletPath(); diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/main/java/datadog/trace/instrumentation/servlet5/JakartaServletInstrumentation.java b/dd-java-agent/instrumentation/servlet/request-5/src/main/java/datadog/trace/instrumentation/servlet5/JakartaServletInstrumentation.java index b4d4084344f..01dc7225427 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/main/java/datadog/trace/instrumentation/servlet5/JakartaServletInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/request-5/src/main/java/datadog/trace/instrumentation/servlet5/JakartaServletInstrumentation.java @@ -2,6 +2,7 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.hasSuperType; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -12,6 +13,7 @@ import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.Config; import datadog.trace.api.DDTags; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import jakarta.servlet.ServletRequest; @@ -51,30 +53,33 @@ public void methodAdvice(MethodTransformer transformer) { public static class ExtractPrincipalAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) - public static boolean before(@Advice.Argument(0) final ServletRequest request) { + public static AgentSpan before(@Advice.Argument(0) final ServletRequest request) { if (!(request instanceof HttpServletRequest)) { - return false; + return null; } - return CallDepthThreadLocalMap.incrementCallDepth(HttpServletRequest.class) == 0; + Object span = request.getAttribute(DD_SPAN_ATTRIBUTE); + if (span instanceof AgentSpan + && CallDepthThreadLocalMap.incrementCallDepth(HttpServletRequest.class) == 0) { + final AgentSpan agentSpan = (AgentSpan) span; + ClassloaderServiceNames.maybeSetToSpan(agentSpan); + return agentSpan; + } + return null; } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void after( - @Advice.Enter boolean advice, @Advice.Argument(0) final ServletRequest request) { - if (advice) { - CallDepthThreadLocalMap.reset(HttpServletRequest.class); - final HttpServletRequest httpServletRequest = - (HttpServletRequest) request; // at this point the cast should be safe - if (Config.get().isServletPrincipalEnabled() - && httpServletRequest.getUserPrincipal() != null) { - Object span = - request.getAttribute( - "datadog.span"); // hardcode to avoid injecting HttpServiceDecorator just for this - if (span instanceof AgentSpan) { - ((AgentSpan) span) - .setTag(DDTags.USER_NAME, httpServletRequest.getUserPrincipal().getName()); - } - } + @Advice.Enter final AgentSpan span, @Advice.Argument(0) final ServletRequest request) { + if (span == null) { + return; + } + + CallDepthThreadLocalMap.reset(HttpServletRequest.class); + final HttpServletRequest httpServletRequest = + (HttpServletRequest) request; // at this point the cast should be safe + if (Config.get().isServletPrincipalEnabled() + && httpServletRequest.getUserPrincipal() != null) { + span.setTag(DDTags.USER_NAME, httpServletRequest.getUserPrincipal().getName()); } } } diff --git a/dd-java-agent/instrumentation/tomcat-5.5/build.gradle b/dd-java-agent/instrumentation/tomcat-5.5/build.gradle index fbee4c3d985..8ee94a412e3 100644 --- a/dd-java-agent/instrumentation/tomcat-5.5/build.gradle +++ b/dd-java-agent/instrumentation/tomcat-5.5/build.gradle @@ -98,6 +98,7 @@ dependencies { latest10TestImplementation(project(':dd-java-agent:instrumentation:tomcat-appsec-6')) latest10TestImplementation(project(':dd-java-agent:instrumentation:tomcat-appsec-7')) + latest10TestImplementation(project(':dd-java-agent:instrumentation:tomcat-classloading-9')) latestDepTestImplementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: '11.+' latestDepTestImplementation group: 'org.apache.tomcat', name: 'jakartaee-migration', version: '1.+' @@ -105,6 +106,7 @@ dependencies { latestDepTestRuntimeOnly(project(':dd-java-agent:instrumentation:tomcat-appsec-6')) latestDepTestRuntimeOnly(project(':dd-java-agent:instrumentation:tomcat-appsec-7')) + latestDepTestRuntimeOnly(project(':dd-java-agent:instrumentation:tomcat-classloading-9')) } // Exclude all the dependencies from test for latestDepTest since the names are completely different. diff --git a/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatServletTest.groovy b/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatServletTest.groovy index 147ebacbd61..3569246fd0a 100644 --- a/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatServletTest.groovy +++ b/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatServletTest.groovy @@ -204,4 +204,13 @@ class TomcatServletTest extends AbstractServletTest { } } +class TomcatServletClassloaderNamingForkedTest extends TomcatServletTest { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // will not set the service name according to the servlet context value + injectSysConfig("trace.experimental.jee.split-by-deployment", "true") + } +} + diff --git a/dd-java-agent/instrumentation/tomcat-classloading-9/build.gradle b/dd-java-agent/instrumentation/tomcat-classloading-9/build.gradle new file mode 100644 index 00000000000..24c01c62e16 --- /dev/null +++ b/dd-java-agent/instrumentation/tomcat-classloading-9/build.gradle @@ -0,0 +1,17 @@ +evaluationDependsOn ':dd-java-agent:instrumentation:tomcat-5.5' + +muzzle { + pass { + group = 'org.apache.tomcat' + module = 'tomcat-catalina' + versions = '[9.0.0.M1,)' + } +} + +apply from: "$rootDir/gradle/java.gradle" + +dependencies { + compileOnly group: 'org.apache.tomcat', name: 'tomcat-catalina', version: '9.0.0.M1' +} + +// testing happens in tomcat-5.5 module diff --git a/dd-java-agent/instrumentation/tomcat-classloading-9/src/main/java/datadog/trace/instrumentation/tomcat9/WebappClassLoaderInstrumentation.java b/dd-java-agent/instrumentation/tomcat-classloading-9/src/main/java/datadog/trace/instrumentation/tomcat9/WebappClassLoaderInstrumentation.java new file mode 100644 index 00000000000..17199ce08fc --- /dev/null +++ b/dd-java-agent/instrumentation/tomcat-classloading-9/src/main/java/datadog/trace/instrumentation/tomcat9/WebappClassLoaderInstrumentation.java @@ -0,0 +1,48 @@ +package datadog.trace.instrumentation.tomcat9; + +import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; + +import com.google.auto.service.AutoService; +import datadog.trace.agent.tooling.Instrumenter; +import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.naming.ClassloaderServiceNames; +import net.bytebuddy.asm.Advice; +import org.apache.catalina.Context; +import org.apache.catalina.WebResourceRoot; +import org.apache.catalina.loader.WebappClassLoaderBase; + +@AutoService(InstrumenterModule.class) +public class WebappClassLoaderInstrumentation extends InstrumenterModule.Tracing + implements Instrumenter.ForSingleType { + public WebappClassLoaderInstrumentation() { + super("tomcat", "tomcat-classloading"); + } + + @Override + public String instrumentedType() { + return "org.apache.catalina.loader.WebappClassLoaderBase"; + } + + @Override + public void methodAdvice(MethodTransformer transformer) { + transformer.applyAdvice( + isMethod().and(named("setResources")), getClass().getName() + "$CaptureWebappNameAdvice"); + } + + public static class CaptureWebappNameAdvice { + @Advice.OnMethodExit(suppress = Throwable.class) + public static void onContextAvailable( + @Advice.This final WebappClassLoaderBase classLoader, + @Advice.Argument(0) final WebResourceRoot webResourceRoot) { + // at this moment we have the context set in this classloader, hence its name + final Context context = webResourceRoot.getContext(); + if (context != null) { + final String contextName = context.getBaseName(); + if (contextName != null && !contextName.isEmpty()) { + ClassloaderServiceNames.addServiceName(classLoader, contextName); + } + } + } + } +} diff --git a/dd-java-agent/instrumentation/twilio/gradle.lockfile b/dd-java-agent/instrumentation/twilio/gradle.lockfile index 3e92170cecb..ef7258cdf7f 100644 --- a/dd-java-agent/instrumentation/twilio/gradle.lockfile +++ b/dd-java-agent/instrumentation/twilio/gradle.lockfile @@ -55,7 +55,7 @@ com.squareup.okhttp3:okhttp:3.12.12=latestDepTestCompileClasspath,latestDepTestR com.squareup.okio:okio:1.17.5=compileClasspath,instrumentPluginClasspath,latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.thoughtworks.qdox:qdox:1.12.1=latestDepTestRuntimeClasspath,testRuntimeClasspath com.twilio.sdk:twilio:0.0.1=compileClasspath,testCompileClasspath,testRuntimeClasspath -com.twilio.sdk:twilio:10.6.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath +com.twilio.sdk:twilio:10.6.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath commons-codec:commons-codec:1.15=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,spotbugs commons-codec:commons-codec:1.9=compileClasspath,testCompileClasspath,testRuntimeClasspath commons-fileupload:commons-fileupload:1.5=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/dd-smoke-tests/iast-util/build.gradle b/dd-smoke-tests/iast-util/build.gradle index 6a207cff971..a7d97b6c75f 100644 --- a/dd-smoke-tests/iast-util/build.gradle +++ b/dd-smoke-tests/iast-util/build.gradle @@ -17,4 +17,6 @@ dependencies { compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.0' compileOnly group: 'com.squareup.okhttp', name: 'okhttp', version: '2.2.0' compileOnly group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.0.0' + compileOnly group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.0' + compileOnly group: 'org.apache.httpcomponents', name: 'httpasyncclient', version: '4.0' } diff --git a/dd-smoke-tests/iast-util/src/main/java/datadog/smoketest/springboot/controller/SsrfController.java b/dd-smoke-tests/iast-util/src/main/java/datadog/smoketest/springboot/controller/SsrfController.java index b8da4ff8c65..411e857f9db 100644 --- a/dd-smoke-tests/iast-util/src/main/java/datadog/smoketest/springboot/controller/SsrfController.java +++ b/dd-smoke-tests/iast-util/src/main/java/datadog/smoketest/springboot/controller/SsrfController.java @@ -7,10 +7,16 @@ import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.http.HttpHost; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; +import org.apache.http.impl.nio.client.HttpAsyncClients; import org.apache.http.message.BasicHttpRequest; +import org.apache.http.nio.client.methods.HttpAsyncMethods; +import org.apache.http.nio.protocol.HttpAsyncRequestProducer; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -89,4 +95,60 @@ public String okHttp3(@RequestParam(value = "url") final String url) { client.connectionPool().evictAll(); return "ok"; } + + @PostMapping("/apache-httpclient5") + public String apacheHttpClient5( + @RequestParam(value = "url", required = false) final String url, + @RequestParam(value = "urlHandler", required = false) final String urlHandler, + @RequestParam(value = "host", required = false) final String host) { + CloseableHttpClient client = HttpClients.createDefault(); + try { + if (host != null) { + final org.apache.hc.core5.http.HttpHost httpHost = + new org.apache.hc.core5.http.HttpHost(host); + final org.apache.hc.client5.http.classic.methods.HttpGet request = + new org.apache.hc.client5.http.classic.methods.HttpGet("/"); + client.execute(httpHost, request); + } else if (url != null) { + final org.apache.hc.client5.http.classic.methods.HttpGet request = + new org.apache.hc.client5.http.classic.methods.HttpGet(url); + client.execute(request); + } else if (urlHandler != null) { + final org.apache.hc.client5.http.classic.methods.HttpGet request = + new org.apache.hc.client5.http.classic.methods.HttpGet(urlHandler); + client.execute(request, response -> null); + } + client.close(); + } catch (Exception e) { + } + return "ok"; + } + + @PostMapping("/apache-httpasyncclient") + public String apacheHttpAsyncClient( + @RequestParam(value = "url", required = false) final String url, + @RequestParam(value = "host", required = false) final String host, + @RequestParam(value = "urlProducer", required = false) final String urlProducer) { + final CloseableHttpAsyncClient client = HttpAsyncClients.createDefault(); + client.start(); + try { + if (host != null) { + final HttpHost httpHost = new HttpHost(host); + client.execute(httpHost, new HttpGet("/"), null); + } else if (url != null) { + final HttpGet request = new HttpGet(url); + client.execute(request, null); + } else if (urlProducer != null) { + final HttpAsyncRequestProducer producer = HttpAsyncMethods.create(new HttpGet(urlProducer)); + client.execute(producer, null, null); + } + } catch (Exception e) { + } finally { + try { + client.close(); + } catch (Exception e) { + } + } + return "ok"; + } } diff --git a/dd-smoke-tests/iast-util/src/testFixtures/groovy/datadog/smoketest/AbstractIastSpringBootTest.groovy b/dd-smoke-tests/iast-util/src/testFixtures/groovy/datadog/smoketest/AbstractIastSpringBootTest.groovy index 96b5dcaabe3..8dbe33e52cb 100644 --- a/dd-smoke-tests/iast-util/src/testFixtures/groovy/datadog/smoketest/AbstractIastSpringBootTest.groovy +++ b/dd-smoke-tests/iast-util/src/testFixtures/groovy/datadog/smoketest/AbstractIastSpringBootTest.groovy @@ -724,7 +724,7 @@ abstract class AbstractIastSpringBootTest extends AbstractIastServerSmokeTest { 'host' | 'dd.datad0g.com' } - void 'ssrf is present (#path)'() { + void 'ssrf is present (#path) (#parameter)'() { setup: final url = "http://localhost:${httpPort}/ssrf/${path}" final body = new FormBody.Builder().add(parameter, value).build() @@ -744,21 +744,29 @@ abstract class AbstractIastSpringBootTest extends AbstractIastServerSmokeTest { && parts[0].value == value && parts[0].source.origin == 'http.request.parameter' && parts[0].source.name == parameter } else if (parameter == 'host') { String protocol = protocolSecure ? 'https://' : 'http://' - return parts.size() == 2 - && parts[0].value == protocol + value && parts[0].source.origin == 'http.request.parameter' && parts[0].source.name == parameter - && parts[1].value == '/' && parts[1].source == null + String finalValue = protocol + value + (endSlash ? '/' : '') + return parts[0].value.endsWith(finalValue) && parts[0].source.origin == 'http.request.parameter' && parts[0].source.name == parameter + } else if (parameter == 'urlProducer' || parameter == 'urlHandler') { + return parts.size() == 1 + && parts[0].value.endsWith(value) && parts[0].source.origin == 'http.request.parameter' && parts[0].source.name == parameter } else { throw new IllegalArgumentException("Parameter $parameter not supported") } } where: - path | parameter | value | protocolSecure - "apache-httpclient4" | "url" | "https://dd.datad0g.com/" | true - "apache-httpclient4" | "host" | "dd.datad0g.com" | false - "commons-httpclient2" | "url" | "https://dd.datad0g.com/" | true - "okHttp2" | "url" | "https://dd.datad0g.com/" | true - "okHttp3" | "url" | "https://dd.datad0g.com/" | true + path | parameter | value | protocolSecure | endSlash + "apache-httpclient4" | "url" | "https://dd.datad0g.com/" | true | true + "apache-httpclient4" | "host" | "dd.datad0g.com" | false | false + "apache-httpasyncclient" | "url" | "https://dd.datad0g.com/" | true | true + "apache-httpasyncclient" | "urlProducer" | "https://dd.datad0g.com/" | true | true + "apache-httpasyncclient" | "host" | "dd.datad0g.com" | false | false + "apache-httpclient5" | "url" | "https://dd.datad0g.com/" | true | true + "apache-httpclient5" | "urlHandler" | "https://dd.datad0g.com/" | true | true + "apache-httpclient5" | "host" | "dd.datad0g.com" | false | true + "commons-httpclient2" | "url" | "https://dd.datad0g.com/" | true | true + "okHttp2" | "url" | "https://dd.datad0g.com/" | true | true + "okHttp3" | "url" | "https://dd.datad0g.com/" | true | true } void 'test iast metrics stored in spans'() { diff --git a/dd-smoke-tests/spring-boot-2.6-webmvc/build.gradle b/dd-smoke-tests/spring-boot-2.6-webmvc/build.gradle index d3e0161f508..e0003f7668b 100644 --- a/dd-smoke-tests/spring-boot-2.6-webmvc/build.gradle +++ b/dd-smoke-tests/spring-boot-2.6-webmvc/build.gradle @@ -42,6 +42,8 @@ dependencies { implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.0' implementation group: 'com.squareup.okhttp', name: 'okhttp', version: '2.2.0' implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.0.0' + implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.0' + implementation group: 'org.apache.httpcomponents', name: 'httpasyncclient', version: '4.0' testImplementation project(':dd-smoke-tests') implementation project(':dd-smoke-tests:iast-util') diff --git a/dd-smoke-tests/springboot/build.gradle b/dd-smoke-tests/springboot/build.gradle index 059950fa4ba..fc4edc573c5 100644 --- a/dd-smoke-tests/springboot/build.gradle +++ b/dd-smoke-tests/springboot/build.gradle @@ -33,7 +33,8 @@ dependencies { implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.0' implementation group: 'com.squareup.okhttp', name: 'okhttp', version: '2.2.0' implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.0.0' - + implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.0' + implementation group: 'org.apache.httpcomponents', name: 'httpasyncclient', version: '4.0' testImplementation project(':dd-smoke-tests') testImplementation(testFixtures(project(":dd-smoke-tests:iast-util"))) diff --git a/dd-smoke-tests/wildfly/build.gradle b/dd-smoke-tests/wildfly/build.gradle index 970fac8aae2..d10e2ed4e73 100644 --- a/dd-smoke-tests/wildfly/build.gradle +++ b/dd-smoke-tests/wildfly/build.gradle @@ -1,15 +1,19 @@ ext { serverName = 'wildfly' - serverModule = 'servlet' + //serverModule = 'servlet' + serverModule = 'wildfly' serverVersion = '15.0.0.Final' serverExtension = 'zip' + maxJavaVersionForTests = JavaVersion.VERSION_11 } repositories { ivy { url 'https://download.jboss.org/' patternLayout { - artifact '/[organisation]/[revision]/[module]/[organisation]-[module]-[revision].[ext]' + // artifact '/[organisation]/[revision]/[module]/[organisation]-[module]-[revision].[ext]' + // we download the full EE profile and not the servlet minimal one + artifact '/[organisation]/[revision]/[organisation]-[revision].[ext]' metadataSources { artifact() } @@ -80,12 +84,12 @@ spotless { } } -def wildflyDir="${buildDir}/${serverName}-${serverModule}-${serverVersion}" +def wildflyDir="${buildDir}/${serverName}-${serverVersion}" tasks.register("unzip", Copy) { dependsOn tasks.earBuild mustRunAfter tasks.compileTestGroovy - def zipFileNamePrefix = "servlet" + def zipFileNamePrefix = "wildfly" def zipPath = project.configurations.serverFile.find { it.name.startsWith(zipFileNamePrefix) } diff --git a/dd-smoke-tests/wildfly/spring-ear/.gitignore b/dd-smoke-tests/wildfly/spring-ear/.gitignore index 1ec2c548b11..72d30a335be 100644 --- a/dd-smoke-tests/wildfly/spring-ear/.gitignore +++ b/dd-smoke-tests/wildfly/spring-ear/.gitignore @@ -1,5 +1,6 @@ # Ignore all project specific gradle directories/files .gradle +.idea gradle build gradlew diff --git a/dd-smoke-tests/wildfly/spring-ear/war/build.gradle b/dd-smoke-tests/wildfly/spring-ear/war/build.gradle index eb58e0085e6..2ebbfebc77b 100644 --- a/dd-smoke-tests/wildfly/spring-ear/war/build.gradle +++ b/dd-smoke-tests/wildfly/spring-ear/war/build.gradle @@ -7,4 +7,6 @@ repositories { dependencies { compileOnly 'org.springframework:spring-webmvc:5.3.0' + compileOnly group: 'javax', name: 'javaee-api', version: '8.0.1' + implementation group: 'com.datadoghq', name: 'dd-trace-api', version: '1.43.0' } diff --git a/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/Common.java b/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/Common.java new file mode 100644 index 00000000000..42cd6cc1ff7 --- /dev/null +++ b/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/Common.java @@ -0,0 +1,8 @@ +package com.example; + +import java.util.concurrent.atomic.AtomicBoolean; + +public class Common { + // for the sake of this example it avoids boilerplate ton inject an ejb into a spring context + public static final AtomicBoolean ENABLED = new AtomicBoolean(false); +} diff --git a/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/ejb/ScheduledEjb.java b/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/ejb/ScheduledEjb.java new file mode 100644 index 00000000000..0550a4e3b1e --- /dev/null +++ b/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/ejb/ScheduledEjb.java @@ -0,0 +1,23 @@ +package com.example.ejb; + +import static com.example.Common.ENABLED; + +import datadog.trace.api.Trace; +import javax.ejb.Schedule; +import javax.ejb.Stateless; + +@Stateless +public class ScheduledEjb { + + @Schedule(second = "*/1", minute = "*", hour = "*") + public void runIt() { + if (ENABLED.getAndSet(false)) { + generateSomeTrace(); + } + } + + @Trace + private void generateSomeTrace() { + // empty + } +} diff --git a/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/hello/HelloController.java b/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/hello/HelloController.java index 891150cc10d..2592edc3ec8 100644 --- a/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/hello/HelloController.java +++ b/dd-smoke-tests/wildfly/spring-ear/war/src/main/java/com/example/hello/HelloController.java @@ -1,5 +1,9 @@ package com.example.hello; +import static com.example.Common.ENABLED; + +import java.util.concurrent.CompletableFuture; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -10,4 +14,21 @@ public class HelloController { public String hello() { return "hello world"; } + + @RequestMapping("/enableScheduling") + public CompletableFuture> enableScheduling() { + ENABLED.set(true); + return CompletableFuture.supplyAsync( + () -> { + while (!ENABLED.get()) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + break; + } + } + return ResponseEntity.ok().build(); + }); + } } diff --git a/dd-smoke-tests/wildfly/spring-ear/war/src/main/webapp/WEB-INF/beans.xml b/dd-smoke-tests/wildfly/spring-ear/war/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 00000000000..f0ba505ab81 --- /dev/null +++ b/dd-smoke-tests/wildfly/spring-ear/war/src/main/webapp/WEB-INF/beans.xml @@ -0,0 +1,8 @@ + + + + diff --git a/dd-smoke-tests/wildfly/spring-ear/war/src/main/webapp/WEB-INF/web.xml b/dd-smoke-tests/wildfly/spring-ear/war/src/main/webapp/WEB-INF/web.xml index 36f2c845f1a..9d1fd42e198 100644 --- a/dd-smoke-tests/wildfly/spring-ear/war/src/main/webapp/WEB-INF/web.xml +++ b/dd-smoke-tests/wildfly/spring-ear/war/src/main/webapp/WEB-INF/web.xml @@ -8,6 +8,7 @@ dispatcher org.springframework.web.servlet.DispatcherServlet + true 1 diff --git a/dd-smoke-tests/wildfly/src/test/groovy/datadog/smoketest/WildflySmokeTest.groovy b/dd-smoke-tests/wildfly/src/test/groovy/datadog/smoketest/WildflySmokeTest.groovy index 5da6a415260..f6a3158c2f8 100644 --- a/dd-smoke-tests/wildfly/src/test/groovy/datadog/smoketest/WildflySmokeTest.groovy +++ b/dd-smoke-tests/wildfly/src/test/groovy/datadog/smoketest/WildflySmokeTest.groovy @@ -1,11 +1,13 @@ package datadog.smoketest +import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.agent.test.utils.PortUtils -import datadog.trace.test.util.Flaky import okhttp3.Request import spock.lang.Shared +import spock.util.concurrent.PollingConditions + +import java.util.concurrent.atomic.AtomicInteger -@Flaky class WildflySmokeTest extends AbstractServerSmokeTest { @Shared @@ -24,12 +26,42 @@ class WildflySmokeTest extends AbstractServerSmokeTest { *defaultJavaProperties, "-Djboss.http.port=${httpPort}", "-Djboss.https.port=${httpsPort}", - "-Djboss.management.http.port=${managementPort}" + "-Djboss.management.http.port=${managementPort}", + "-Ddd.trace.experimental.jee.split-by-deployment=true", + "-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()}:includeService,DDAgentWriter", ] - processBuilder.environment().put("JAVA_OPTS", javaOpts.collect({ it.replace(' ', '\\ ')}).join(' ')) + processBuilder.environment().put("JAVA_OPTS", javaOpts.collect({ it.replace(' ', '\\ ') }).join(' ')) return processBuilder } + @Override + File createTemporaryFile() { + def ret = File.createTempFile("trace-structure-docs", "out") + ret + } + + @Override + def inferServiceName() { + // do not set DD_SERVICE + false + } + + @Override + protected boolean isAcceptable(int processIndex, Map traceCounts) { + def hasServletRequestTraces = traceCounts.find { it.getKey() == "[war:servlet.request[war:spring.handler]]" }?.getValue()?.get() == 201 + def hasScheduledEjbTrace = traceCounts.find { it.getKey() == "[war:trace.annotation]" }?.getValue()?.get() == 1 + assert hasScheduledEjbTrace && hasServletRequestTraces: "Encountered traces: " + traceCounts + return true + } + + + def setupSpec() { + //wait for the deployment + new PollingConditions(timeout: 300, delay: 2).eventually { + assert OkHttpUtils.client().newCall(new Request.Builder().url("http://localhost:$httpPort/war/hello").build()).execute().code() == 200 + } + } + def cleanupSpec() { ProcessBuilder processBuilder = new ProcessBuilder( "${wildflyDirectory}/bin/jboss-cli.sh", @@ -41,9 +73,9 @@ class WildflySmokeTest extends AbstractServerSmokeTest { process.waitFor() } - def "default home page #n th time"() { + def "spring controller #n th time"() { setup: - String url = "http://localhost:$httpPort/" + String url = "http://localhost:$httpPort/war/hello" def request = new Request.Builder().url(url).get().build() when: @@ -52,26 +84,21 @@ class WildflySmokeTest extends AbstractServerSmokeTest { then: def responseBodyStr = response.body().string() responseBodyStr != null - responseBodyStr.contains("Your WildFly instance is running.") - response.body().contentType().toString().contains("text/html") + responseBodyStr.contentEquals("hello world") response.code() == 200 - where: n << (1..200) } - def "spring context loaded successfully"() { + def "scheduled ejb has right service name"() { setup: - String url = "http://localhost:$httpPort/war/hello" + String url = "http://localhost:$httpPort/war/enableScheduling" def request = new Request.Builder().url(url).get().build() when: def response = client.newCall(request).execute() then: - def responseBodyStr = response.body().string() - responseBodyStr != null - responseBodyStr.contentEquals("hello world") response.code() == 200 } } diff --git a/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java b/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java index 5319aa9a18f..a3f2915dcb2 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java @@ -58,6 +58,7 @@ public final class ConfigDefaults { static final boolean DEFAULT_RUNTIME_CONTEXT_FIELD_INJECTION = true; static final boolean DEFAULT_SERIALVERSIONUID_FIELD_INJECTION = true; + static final boolean DEFAULT_EXPERIMENTATAL_JEE_SPLIT_BY_DEPLOYMENT = false; static final boolean DEFAULT_PRIORITY_SAMPLING_ENABLED = true; static final String DEFAULT_PRIORITY_SAMPLING_FORCE = null; static final boolean DEFAULT_TRACE_RESOLVER_ENABLED = true; @@ -69,6 +70,9 @@ public final class ConfigDefaults { static final boolean DEFAULT_DB_CLIENT_HOST_SPLIT_BY_INSTANCE_TYPE_SUFFIX = false; static final boolean DEFAULT_DB_CLIENT_HOST_SPLIT_BY_HOST = false; static final String DEFAULT_DB_DBM_PROPAGATION_MODE_MODE = "disabled"; + static final boolean DEFAULT_DB_DBM_TRACE_PREPARED_STATEMENTS = false; + // Default value is set to 0, it disables the latency trace interceptor + static final int DEFAULT_TRACE_KEEP_LATENCY_THRESHOLD_MS = 0; static final int DEFAULT_SCOPE_DEPTH_LIMIT = 100; static final int DEFAULT_SCOPE_ITERATION_KEEP_ALIVE = 30; // in seconds static final int DEFAULT_PARTIAL_FLUSH_MIN_SPANS = 1000; diff --git a/dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java b/dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java index ee4886e7ad0..524dde00dcb 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java @@ -89,6 +89,8 @@ public final class GeneralConfig { public static final String AGENTLESS_LOG_SUBMISSION_ENABLED = "agentless.log.submission.enabled"; public static final String AGENTLESS_LOG_SUBMISSION_QUEUE_SIZE = "agentless.log.submission.queue.size"; + public static final String TELEMETRY_DEPENDENCY_RESOLUTION_PERIOD_MILLIS = + "telemetry.dependency.resolution.period.millis"; public static final String AGENTLESS_LOG_SUBMISSION_LEVEL = "agentless.log.submission.level"; public static final String AGENTLESS_LOG_SUBMISSION_URL = "agentless.log.submission.url"; diff --git a/dd-trace-api/src/main/java/datadog/trace/api/config/TraceInstrumentationConfig.java b/dd-trace-api/src/main/java/datadog/trace/api/config/TraceInstrumentationConfig.java index 0d81bf0ca85..f15f2899d79 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/config/TraceInstrumentationConfig.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/config/TraceInstrumentationConfig.java @@ -68,8 +68,13 @@ public final class TraceInstrumentationConfig { public static final String DB_DBM_PROPAGATION_MODE_MODE = "dbm.propagation.mode"; + public static final String DB_DBM_TRACE_PREPARED_STATEMENTS = "dbm.trace_prepared_statements"; + public static final String JDBC_CONNECTION_CLASS_NAME = "trace.jdbc.connection.class.name"; + public static final String EXPERIMENTATAL_JEE_SPLIT_BY_DEPLOYMENT = + "trace.experimental.jee.split-by-deployment"; + public static final String HTTP_URL_CONNECTION_CLASS_NAME = "trace.http.url.connection.class.name"; @@ -159,5 +164,7 @@ public final class TraceInstrumentationConfig { /** If set, the instrumentation will set its resource name on the local root too. */ public static final String AXIS_PROMOTE_RESOURCE_NAME = "trace.axis.promote.resource-name"; + public static final String SQS_BODY_PROPAGATION_ENABLED = "trace.sqs.body.propagation.enabled"; + private TraceInstrumentationConfig() {} } diff --git a/dd-trace-api/src/main/java/datadog/trace/api/config/TracerConfig.java b/dd-trace-api/src/main/java/datadog/trace/api/config/TracerConfig.java index cd48250cb27..b3426d8d989 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/config/TracerConfig.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/config/TracerConfig.java @@ -73,7 +73,9 @@ public final class TracerConfig { public static final String TRACE_HTTP_CLIENT_ERROR_STATUSES = "trace.http.client.error.statuses"; public static final String SPLIT_BY_TAGS = "trace.split-by-tags"; - + // trace latency interceptor value should be in ms + public static final String TRACE_KEEP_LATENCY_THRESHOLD_MS = + "trace.experimental.keep.latency.threshold.ms"; public static final String SCOPE_DEPTH_LIMIT = "trace.scope.depth.limit"; public static final String SCOPE_STRICT_MODE = "trace.scope.strict.mode"; public static final String SCOPE_ITERATION_KEEP_ALIVE = "trace.scope.iteration.keep.alive"; diff --git a/dd-trace-api/src/main/java/datadog/trace/api/interceptor/AbstractTraceInterceptor.java b/dd-trace-api/src/main/java/datadog/trace/api/interceptor/AbstractTraceInterceptor.java index 0afc6229083..b155e585a94 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/interceptor/AbstractTraceInterceptor.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/interceptor/AbstractTraceInterceptor.java @@ -22,6 +22,9 @@ public enum Priority { DD_INTAKE(2), GIT_METADATA(3), + // trace custom sampling + ROOT_SPAN_LATENCY(Integer.MAX_VALUE - 2), + // trace data collection CI_VISIBILITY_TELEMETRY(Integer.MAX_VALUE - 1), SERVICE_NAME_COLLECTING(Integer.MAX_VALUE); diff --git a/dd-trace-core/src/main/java/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor.java b/dd-trace-core/src/main/java/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor.java index bec1bdcd64d..4d94d9dd8a7 100644 --- a/dd-trace-core/src/main/java/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor.java +++ b/dd-trace-core/src/main/java/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor.java @@ -1,10 +1,10 @@ package datadog.trace.civisibility.interceptor; -import datadog.trace.api.DDSpanTypes; +import static datadog.trace.api.civisibility.CIConstants.CIAPP_TEST_ORIGIN; + import datadog.trace.api.DDTags; import datadog.trace.api.interceptor.AbstractTraceInterceptor; import datadog.trace.api.interceptor.MutableSpan; -import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.core.DDSpan; import datadog.trace.core.DDTraceCoreInfo; import java.util.Collection; @@ -15,8 +15,6 @@ public class CiVisibilityTraceInterceptor extends AbstractTraceInterceptor { public static final CiVisibilityTraceInterceptor INSTANCE = new CiVisibilityTraceInterceptor(Priority.CI_VISIBILITY_TRACE); - static final UTF8BytesString CIAPP_TEST_ORIGIN = UTF8BytesString.create("ciapp-test"); - protected CiVisibilityTraceInterceptor(Priority priority) { super(priority); } @@ -33,20 +31,13 @@ public Collection onTraceComplete( final DDSpan spanToCheck = null == localRootSpan ? firstSpan : localRootSpan; - // If root span is not a CI visibility span, we drop the full trace. - CharSequence type = spanToCheck.getType(); // Don't null pointer if there is no type - if (type == null - || (!DDSpanTypes.TEST.contentEquals(type) - && !DDSpanTypes.TEST_SUITE_END.contentEquals(type) - && !DDSpanTypes.TEST_MODULE_END.contentEquals(type) - && !DDSpanTypes.TEST_SESSION_END.contentEquals(type))) { + // If root span does not originate from CI visibility, we drop the full trace. + CharSequence origin = spanToCheck.getOrigin(); + if (origin == null || !CIAPP_TEST_ORIGIN.contentEquals(origin)) { return Collections.emptyList(); } - // If the trace belongs to a "test", we need to set the origin to `ciapp-test` and the - // `library_version` tag for all spans. - firstSpan.context().setOrigin(CIAPP_TEST_ORIGIN); - firstSpan.setTag(DDTags.LIBRARY_VERSION_TAG_KEY, DDTraceCoreInfo.VERSION); + // If the trace belongs to a "test", we need to set the `library_version` tag for all spans. for (MutableSpan span : trace) { span.setTag(DDTags.LIBRARY_VERSION_TAG_KEY, DDTraceCoreInfo.VERSION); } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index d4e01b3adfc..7d93d13c2a6 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -40,6 +40,7 @@ import datadog.trace.api.interceptor.TraceInterceptor; import datadog.trace.api.internal.TraceSegment; import datadog.trace.api.metrics.SpanMetricRegistry; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.api.naming.SpanNaming; import datadog.trace.api.remoteconfig.ServiceNameCollector; import datadog.trace.api.sampling.PrioritySampling; @@ -88,6 +89,7 @@ import datadog.trace.core.scopemanager.ContinuableScopeManager; import datadog.trace.core.taginterceptor.RuleFlags; import datadog.trace.core.taginterceptor.TagInterceptor; +import datadog.trace.core.traceinterceptor.LatencyTraceInterceptor; import datadog.trace.lambda.LambdaHandler; import datadog.trace.relocate.api.RatelimitedLogger; import datadog.trace.util.AgentTaskScheduler; @@ -745,6 +747,10 @@ private CoreTracer( addTraceInterceptor(GitMetadataTraceInterceptor.INSTANCE); } + if (config.isTraceKeepLatencyThresholdEnabled()) { + addTraceInterceptor(LatencyTraceInterceptor.INSTANCE); + } + this.instrumentationGateway = instrumentationGateway; callbackProviderAppSec = instrumentationGateway.getCallbackProvider(RequestContextSlot.APPSEC); callbackProviderIast = instrumentationGateway.getCallbackProvider(RequestContextSlot.IAST); @@ -1594,11 +1600,16 @@ private DDSpanContext buildSpanContext() { } if (serviceName == null) { serviceName = traceConfig.getPreferredServiceName(); - if (serviceName == null) { - // it could be on the initial snapshot but may be overridden to null and service name - // cannot be null - serviceName = CoreTracer.this.serviceName; - } + } + if (serviceName == null && parentServiceName == null) { + // in this case we have a local root without service name. We can try to see if we can find + // one from the thread context classloader + serviceName = ClassloaderServiceNames.maybeGetForCurrentThread(); + } + if (serviceName == null) { + // it could be on the initial snapshot but may be overridden to null and service name + // cannot be null + serviceName = CoreTracer.this.serviceName; } final CharSequence operationName = diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/MsgPackDatastreamsPayloadWriter.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/MsgPackDatastreamsPayloadWriter.java index e6dc2a18e05..2baa8943de0 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/MsgPackDatastreamsPayloadWriter.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/MsgPackDatastreamsPayloadWriter.java @@ -6,6 +6,7 @@ import datadog.communication.serialization.Writable; import datadog.communication.serialization.WritableFormatter; import datadog.communication.serialization.msgpack.MsgPackWriter; +import datadog.trace.api.Config; import datadog.trace.api.WellKnownTags; import datadog.trace.common.metrics.Sink; import java.util.Collection; @@ -31,6 +32,7 @@ public class MsgPackDatastreamsPayloadWriter implements DatastreamsPayloadWriter private static final byte[] PARENT_HASH = "ParentHash".getBytes(ISO_8859_1); private static final byte[] BACKLOG_VALUE = "Value".getBytes(ISO_8859_1); private static final byte[] BACKLOG_TAGS = "Tags".getBytes(ISO_8859_1); + private static final byte[] PRODUCTS_MASK = "ProductMask".getBytes(ISO_8859_1); private static final int INITIAL_CAPACITY = 512 * 1024; @@ -55,9 +57,30 @@ public void reset() { buffer.reset(); } + // extend the list as needed + private static final int APM_PRODUCT = 1; // 00000001 + private static final int DSM_PRODUCT = 2; // 00000010 + private static final int DJM_PRODUCT = 4; // 00000100 + private static final int PROFILING_PRODUCT = 8; // 00001000 + + public long getProductsMask() { + long productsMask = APM_PRODUCT; + if (Config.get().isDataStreamsEnabled()) { + productsMask |= DSM_PRODUCT; + } + if (Config.get().isDataJobsEnabled()) { + productsMask |= DJM_PRODUCT; + } + if (Config.get().isProfilingEnabled()) { + productsMask |= PROFILING_PRODUCT; + } + + return productsMask; + } + @Override public void writePayload(Collection data, String serviceNameOverride) { - writer.startMap(7); + writer.startMap(8); /* 1 */ writer.writeUTF8(ENV); writer.writeUTF8(wellKnownTags.getEnv()); @@ -112,6 +135,10 @@ public void writePayload(Collection data, String serviceNameOverrid } } + /* 8 */ + writer.writeUTF8(PRODUCTS_MASK); + writer.writeLong(getProductsMask()); + buffer.mark(); sink.accept(buffer.messageCount(), buffer.slice()); buffer.reset(); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/ContextInterpreter.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/ContextInterpreter.java index fba3a31de1d..d3466f76d8b 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/ContextInterpreter.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/ContextInterpreter.java @@ -269,7 +269,8 @@ protected TagContext build() { baggage, samplingPriorityOrDefault(traceId, samplingPriority), traceConfig, - style()); + style(), + DDTraceId.ZERO); } } return null; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/ExtractedContext.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/ExtractedContext.java index edf6bb6464c..e799688401d 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/ExtractedContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/ExtractedContext.java @@ -49,7 +49,15 @@ public ExtractedContext( final PropagationTags propagationTags, final TraceConfig traceConfig, final TracePropagationStyle propagationStyle) { - super(origin, tags, httpHeaders, baggage, samplingPriority, traceConfig, propagationStyle); + super( + origin, + tags, + httpHeaders, + baggage, + samplingPriority, + traceConfig, + propagationStyle, + DDTraceId.ZERO); this.traceId = traceId; this.spanId = spanId; this.endToEndStartTime = endToEndStartTime; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java b/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java index 8229c5b42a9..56ae6da4c75 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java @@ -51,20 +51,23 @@ public class TagInterceptor { private final boolean shouldSet404ResourceName; private final boolean shouldSetUrlResourceAsName; + private final boolean jeeSplitByDeployment; public TagInterceptor(RuleFlags ruleFlags) { this( Config.get().isServiceNameSetByUser(), CapturedEnvironment.get().getProperties().get(GeneralConfig.SERVICE_NAME), Config.get().getSplitByTags(), - ruleFlags); + ruleFlags, + Config.get().isJeeSplitByDeployment()); } public TagInterceptor( boolean isServiceNameSetByUser, String inferredServiceName, Set splitServiceTags, - RuleFlags ruleFlags) { + RuleFlags ruleFlags, + boolean jeeSplitByDeployment) { this.isServiceNameSetByUser = isServiceNameSetByUser; this.inferredServiceName = inferredServiceName; this.splitServiceTags = splitServiceTags; @@ -76,6 +79,7 @@ public TagInterceptor( && ruleFlags.isEnabled(STATUS_404) && ruleFlags.isEnabled(STATUS_404_DECORATOR); shouldSetUrlResourceAsName = ruleFlags.isEnabled(URL_AS_RESOURCE_NAME); + this.jeeSplitByDeployment = jeeSplitByDeployment; } public boolean interceptTag(DDSpanContext span, String tag, Object value) { @@ -276,6 +280,7 @@ private boolean interceptServletContext(DDSpanContext span, Object value) { // so will always return false here. if (!splitByServletContext && (isServiceNameSetByUser + || jeeSplitByDeployment || !ruleFlags.isEnabled(RuleFlags.Feature.SERVLET_CONTEXT) || !span.getServiceName().isEmpty() && !span.getServiceName().equals(inferredServiceName) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/traceinterceptor/LatencyTraceInterceptor.java b/dd-trace-core/src/main/java/datadog/trace/core/traceinterceptor/LatencyTraceInterceptor.java new file mode 100644 index 00000000000..1f6f5818aa0 --- /dev/null +++ b/dd-trace-core/src/main/java/datadog/trace/core/traceinterceptor/LatencyTraceInterceptor.java @@ -0,0 +1,45 @@ +package datadog.trace.core.traceinterceptor; + +import datadog.trace.api.Config; +import datadog.trace.api.DDTags; +import datadog.trace.api.interceptor.AbstractTraceInterceptor; +import datadog.trace.api.interceptor.MutableSpan; +import datadog.trace.api.interceptor.TraceInterceptor; +import java.util.Collection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * This trace latency interceptor is disabled by default. We can activate it by setting the value of + * dd.trace.latency.interceptor.value to a positive value This value should be in milliseconds and + * this interceptor will retain any local trace who has a root span duration greater than this + * value. The activation of this interceptor is ignored if partial flush is enabled in order to + * avoid incomplete local trace (incomplete chunk of trace). Note that since we're changing the + * sampling priority at the end of local trace, there is no guarantee to get complete traces, since + * the original sampling priority for this trace may have already been propagated. + */ +public class LatencyTraceInterceptor extends AbstractTraceInterceptor { + private static final Logger log = LoggerFactory.getLogger(LatencyTraceInterceptor.class); + // duration configured in ms, need to be converted in nano seconds + private static final long LATENCY = Config.get().getTraceKeepLatencyThreshold() * 1000000L; + + public static final TraceInterceptor INSTANCE = + new LatencyTraceInterceptor(Priority.ROOT_SPAN_LATENCY); + + protected LatencyTraceInterceptor(Priority priority) { + super(priority); + } + + @Override + public Collection onTraceComplete( + Collection latencyTrace) { + if (latencyTrace.isEmpty()) { + return latencyTrace; + } + MutableSpan rootSpan = latencyTrace.iterator().next().getLocalRootSpan(); + if (rootSpan != null && rootSpan.getDurationNano() > LATENCY) { + rootSpan.setTag(DDTags.MANUAL_KEEP, true); + } + return latencyTrace; + } +} diff --git a/dd-trace-core/src/test/groovy/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptorTest.groovy index 2521ddc8d10..f9d2f46e1e6 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptorTest.groovy @@ -2,7 +2,9 @@ package datadog.trace.civisibility.interceptor import datadog.trace.api.DDSpanTypes import datadog.trace.api.DDTags +import datadog.trace.api.civisibility.CIConstants import datadog.trace.common.writer.ListWriter +import datadog.trace.core.DDSpanContext import datadog.trace.core.test.DDCoreSpecification import spock.lang.Timeout @@ -16,7 +18,7 @@ class CiVisibilityTraceInterceptorTest extends DDCoreSpecification { tracer?.close() } - def "discard a trace that does not come from a test"() { + def "discard a trace that does not come from ci app"() { tracer.addTraceInterceptor(CiVisibilityTraceInterceptor.INSTANCE) tracer.buildSpan("sample-span").start().finish() @@ -24,23 +26,41 @@ class CiVisibilityTraceInterceptorTest extends DDCoreSpecification { writer.size() == 0 } - def "add ciapp origin and tracer version to spans of type #spanType"() { + def "do not discard a trace that comes from ci app"() { + tracer.addTraceInterceptor(CiVisibilityTraceInterceptor.INSTANCE) + + def span = tracer.buildSpan("sample-span").start() + ((DDSpanContext) span.context()).origin = CIConstants.CIAPP_TEST_ORIGIN + span.finish() + + expect: + writer.size() == 1 + } + + def "add tracer version to spans of type #spanType"() { setup: tracer.addTraceInterceptor(CiVisibilityTraceInterceptor.INSTANCE) - tracer.buildSpan("sample-span").withSpanType(spanType).start().finish() + + def span = tracer.buildSpan("sample-span").withSpanType(spanType).start() + ((DDSpanContext) span.context()).origin = CIConstants.CIAPP_TEST_ORIGIN + span.finish() writer.waitForTraces(1) expect: def trace = writer.firstTrace() trace.size() == 1 - def span = trace[0] + def receivedSpan = trace[0] - span.context().origin == CiVisibilityTraceInterceptor.CIAPP_TEST_ORIGIN - span.getTag(DDTags.LIBRARY_VERSION_TAG_KEY) != null + receivedSpan.getTag(DDTags.LIBRARY_VERSION_TAG_KEY) != null where: - spanType << [DDSpanTypes.TEST, DDSpanTypes.TEST_SUITE_END, DDSpanTypes.TEST_MODULE_END] + spanType << [ + DDSpanTypes.TEST, + DDSpanTypes.TEST_SUITE_END, + DDSpanTypes.TEST_MODULE_END, + DDSpanTypes.TEST_SESSION_END + ] } } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy index 5f01afeafa7..6d163d0ac79 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy @@ -96,7 +96,7 @@ class DataStreamsWritingTest extends DDCoreSpecification { BufferedSource bufferedSource = Okio.buffer(gzipSource) MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bufferedSource.inputStream()) - assert unpacker.unpackMapHeader() == 7 + assert unpacker.unpackMapHeader() == 8 assert unpacker.unpackString() == "Env" assert unpacker.unpackString() == "test" assert unpacker.unpackString() == "Service" @@ -161,7 +161,7 @@ class DataStreamsWritingTest extends DDCoreSpecification { BufferedSource bufferedSource = Okio.buffer(gzipSource) MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bufferedSource.inputStream()) - assert unpacker.unpackMapHeader() == 7 + assert unpacker.unpackMapHeader() == 8 assert unpacker.unpackString() == "Env" assert unpacker.unpackString() == "test" assert unpacker.unpackString() == "Service" @@ -262,6 +262,9 @@ class DataStreamsWritingTest extends DDCoreSpecification { assert unpacker.unpackString() == (hash == 1 ? "topic:testTopic" : "topic:testTopic2") } + assert unpacker.unpackString() == "ProductMask" + assert unpacker.unpackLong() == 1 + return true } } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/taginterceptor/TagInterceptorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/taginterceptor/TagInterceptorTest.groovy index b91cb2210b6..9156ce067bb 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/taginterceptor/TagInterceptorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/taginterceptor/TagInterceptorTest.groovy @@ -1,8 +1,5 @@ package datadog.trace.core.taginterceptor -import datadog.trace.core.DDSpanContext -import datadog.trace.api.remoteconfig.ServiceNameCollector - import static datadog.trace.api.ConfigDefaults.DEFAULT_SERVICE_NAME import static datadog.trace.api.ConfigDefaults.DEFAULT_SERVLET_ROOT_CONTEXT_SERVICE_NAME import static datadog.trace.api.DDTags.ANALYTICS_SAMPLE_RATE @@ -12,6 +9,7 @@ import datadog.trace.api.DDSpanTypes import datadog.trace.api.DDTags import datadog.trace.api.config.GeneralConfig import datadog.trace.api.env.CapturedEnvironment +import datadog.trace.api.remoteconfig.ServiceNameCollector import datadog.trace.api.sampling.PrioritySampling import datadog.trace.bootstrap.instrumentation.api.AgentSpan import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags @@ -20,6 +18,7 @@ import datadog.trace.common.sampling.AllSampler import datadog.trace.common.writer.ListWriter import datadog.trace.common.writer.LoggingWriter import datadog.trace.core.CoreSpan +import datadog.trace.core.DDSpanContext import datadog.trace.core.test.DDCoreSpecification class TagInterceptorTest extends DDCoreSpecification { @@ -178,33 +177,34 @@ class TagInterceptorTest extends DDCoreSpecification { .sampler(new AllSampler()) // equivalent to split-by-tags: tag .tagInterceptor(new TagInterceptor(true, "my-service", - Collections.singleton(tag), new RuleFlags())) + Collections.singleton(tag), new RuleFlags(), false)) .build() } - def "split-by-tags for servlet.context"() { + def "split-by-tags for servlet.context and experimental jee split by deployment is #jeeActive"() { setup: - def tracer = createSplittingTracer(InstrumentationTags.SERVLET_CONTEXT) - - when: - def span = tracer.buildSpan("some span") - .withTag(InstrumentationTags.SERVLET_CONTEXT, "some-context") - .start() - span.finish() - - then: - span.serviceName == "some-context" - + def tracer = tracerBuilder() + .serviceName("my-service") + .writer(new LoggingWriter()) + .sampler(new AllSampler()) + .tagInterceptor(new TagInterceptor(false, "my-service", + Collections.emptySet(), new RuleFlags(), jeeActive)) + .build() when: - span = tracer.buildSpan("some span").start() + def span = tracer.buildSpan("some span").start() span.setTag(InstrumentationTags.SERVLET_CONTEXT, "some-context") span.finish() then: - span.serviceName == "some-context" + span.serviceName == expected cleanup: tracer.close() + + where: + expected | jeeActive + "some-context" | false + "my-service" | true } def "peer.service then split-by-tags via builder"() { @@ -694,13 +694,13 @@ class TagInterceptorTest extends DDCoreSpecification { tracer.close() } - void "when interceptServiceName extraServiceProvider is called"(){ + void "when interceptServiceName extraServiceProvider is called"() { setup: final extraServiceProvider = Mock(ServiceNameCollector) ServiceNameCollector.INSTANCE = extraServiceProvider final ruleFlags = Mock(RuleFlags) ruleFlags.isEnabled(_) >> true - final interceptor = new TagInterceptor(true, "my-service", Collections.singleton(DDTags.SERVICE_NAME), ruleFlags) + final interceptor = new TagInterceptor(true, "my-service", Collections.singleton(DDTags.SERVICE_NAME), ruleFlags, false) when: interceptor.interceptServiceName(null, Mock(DDSpanContext), "some-service") @@ -709,13 +709,13 @@ class TagInterceptorTest extends DDCoreSpecification { 1 * extraServiceProvider.addService("some-service") } - void "when interceptServletContext extraServiceProvider is called"(){ + void "when interceptServletContext extraServiceProvider is called"() { setup: final extraServiceProvider = Mock(ServiceNameCollector) ServiceNameCollector.INSTANCE = extraServiceProvider final ruleFlags = Mock(RuleFlags) ruleFlags.isEnabled(_) >> true - final interceptor = new TagInterceptor(true, "my-service", Collections.singleton("servlet.context"), ruleFlags) + final interceptor = new TagInterceptor(true, "my-service", Collections.singleton("servlet.context"), ruleFlags, false) when: interceptor.interceptServletContext(Mock(DDSpanContext), value) @@ -724,13 +724,13 @@ class TagInterceptorTest extends DDCoreSpecification { 1 * extraServiceProvider.addService(expected) where: - value | expected - "/" | "root-servlet" - "/test" | "test" - "test" | "test" + value | expected + "/" | "root-servlet" + "/test" | "test" + "test" | "test" } - void "When intercepts appsec propagation tag addAppsecPropagationTag is called"(){ + void "When intercepts appsec propagation tag addAppsecPropagationTag is called"() { setup: final ruleFlags = Mock(RuleFlags) ruleFlags.isEnabled(_) >> true diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/traceinterceptor/LatencyTraceInterceptorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/traceinterceptor/LatencyTraceInterceptorTest.groovy new file mode 100644 index 00000000000..e0ed91db723 --- /dev/null +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/traceinterceptor/LatencyTraceInterceptorTest.groovy @@ -0,0 +1,48 @@ +package datadog.trace.core.traceinterceptor + +import datadog.trace.api.DDTags +import datadog.trace.common.writer.ListWriter + +import datadog.trace.core.test.DDCoreSpecification + +import spock.lang.Timeout + +@Timeout(10) +class LatencyTraceInterceptorTest extends DDCoreSpecification { + + + def "test set sampling priority according to latency"() { + setup: + + injectSysConfig("trace.partial.flush.enabled", partialFlushEnabled) + injectSysConfig("trace.experimental.keep.latency.threshold.ms", latencyThreshold) + + when: + def writer = new ListWriter() + def tracer = tracerBuilder().writer(writer).build() + + def spanSetup = tracer.buildSpan("test","my_operation_name").withTag(priorityTag, true).start() + sleep(minDuration) + spanSetup.finish() + + then: + def trace = writer.firstTrace() + trace.size() == 1 + def span = trace[0] + span.context().getSamplingPriority() == expected + + cleanup: + tracer.close() + + where: + partialFlushEnabled | latencyThreshold | priorityTag | minDuration | expected + "true" | "200" | DDTags.MANUAL_KEEP | 10 | 2 + "true" | "200" | DDTags.MANUAL_DROP | 10 | -1 + "true" | "200" | DDTags.MANUAL_KEEP | 300 | 2 + "true" | "200" | DDTags.MANUAL_DROP | 300 | -1 + "false" | "200" | DDTags.MANUAL_KEEP | 10 | 2 + "false" | "200" | DDTags.MANUAL_DROP | 10 | -1 + "false" | "200" | DDTags.MANUAL_KEEP | 300 | 2 + "false" | "200" | DDTags.MANUAL_DROP | 300 | 2 + } +} diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java index be2db34e368..eb419c514a7 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java @@ -123,7 +123,10 @@ public DDTracerBuilder extractor(HttpCodec.Extractor extractor) { return this; } + @Deprecated public DDTracerBuilder scopeManager(ScopeManager scopeManager) { + log.warn( + "Custom ScopeManagers are deprecated and will be removed in a future release of dd-trace-ot"); this.scopeManager = scopeManager; return this; } diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 42c12af3cea..24b06c8351b 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -10,6 +10,7 @@ final class CachedData { excludeShared : (Closure) { // projects bundled with shared or on bootstrap exclude(project(':dd-java-agent:agent-bootstrap')) + exclude(project(':dd-java-agent:agent-debugger:debugger-bootstrap')) exclude(project(':dd-java-agent:agent-logging')) exclude(project(':dd-trace-api')) exclude(project(':internal-api')) diff --git a/internal-api/src/main/java/datadog/trace/api/Config.java b/internal-api/src/main/java/datadog/trace/api/Config.java index cde58e539ca..e24fe3a2710 100644 --- a/internal-api/src/main/java/datadog/trace/api/Config.java +++ b/internal-api/src/main/java/datadog/trace/api/Config.java @@ -172,10 +172,13 @@ public static String getHostName() { private final boolean dbClientSplitByInstanceTypeSuffix; private final boolean dbClientSplitByHost; private final Set splitByTags; + private final boolean jeeSplitByDeployment; private final int scopeDepthLimit; private final boolean scopeStrictMode; private final int scopeIterationKeepAlive; private final int partialFlushMinSpans; + private final int traceKeepLatencyThreshold; + private final boolean traceKeepLatencyThresholdEnabled; private final boolean traceStrictWritesEnabled; private final boolean logExtractHeaderNames; private final Set propagationStylesToExtract; @@ -373,6 +376,7 @@ public static String getHostName() { private final int remoteConfigMaxExtraServices; private final String DBMPropagationMode; + private final boolean DBMTracePreparedStatements; private final boolean debuggerEnabled; private final int debuggerUploadTimeout; @@ -411,6 +415,7 @@ public static String getHostName() { private final boolean awsPropagationEnabled; private final boolean sqsPropagationEnabled; + private final boolean sqsBodyPropagationEnabled; private final boolean kafkaClientPropagationEnabled; private final Set kafkaClientPropagationDisabledTopics; @@ -533,6 +538,8 @@ public static String getHostName() { private final int cloudPayloadTaggingMaxDepth; private final int cloudPayloadTaggingMaxTags; + private final long dependecyResolutionPeriodMillis; + // Read order: System Properties -> Env Variables, [-> properties file], [-> default value] private Config() { this(ConfigProvider.createDefault()); @@ -843,8 +850,16 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins configProvider.getString( DB_DBM_PROPAGATION_MODE_MODE, DEFAULT_DB_DBM_PROPAGATION_MODE_MODE); + DBMTracePreparedStatements = + configProvider.getBoolean( + DB_DBM_TRACE_PREPARED_STATEMENTS, DEFAULT_DB_DBM_TRACE_PREPARED_STATEMENTS); + splitByTags = tryMakeImmutableSet(configProvider.getList(SPLIT_BY_TAGS)); + jeeSplitByDeployment = + configProvider.getBoolean( + EXPERIMENTATAL_JEE_SPLIT_BY_DEPLOYMENT, DEFAULT_EXPERIMENTATAL_JEE_SPLIT_BY_DEPLOYMENT); + springDataRepositoryInterfaceResourceName = configProvider.getBoolean(SPRING_DATA_REPOSITORY_INTERFACE_RESOURCE_NAME, true); @@ -861,6 +876,12 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins ? 0 : configProvider.getInteger(PARTIAL_FLUSH_MIN_SPANS, DEFAULT_PARTIAL_FLUSH_MIN_SPANS); + traceKeepLatencyThreshold = + configProvider.getInteger( + TRACE_KEEP_LATENCY_THRESHOLD_MS, DEFAULT_TRACE_KEEP_LATENCY_THRESHOLD_MS); + + traceKeepLatencyThresholdEnabled = !partialFlushEnabled && (traceKeepLatencyThreshold > 0); + traceStrictWritesEnabled = configProvider.getBoolean(TRACE_STRICT_WRITES_ENABLED, false); logExtractHeaderNames = @@ -1563,6 +1584,7 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment()) awsPropagationEnabled = isPropagationEnabled(true, "aws", "aws-sdk"); sqsPropagationEnabled = isPropagationEnabled(true, "sqs"); + sqsBodyPropagationEnabled = configProvider.getBoolean(SQS_BODY_PROPAGATION_ENABLED, false); kafkaClientPropagationEnabled = isPropagationEnabled(true, "kafka", "kafka.client"); kafkaClientPropagationDisabledTopics = @@ -1782,6 +1804,11 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment()) this.cloudPayloadTaggingMaxTags = configProvider.getInteger(TracerConfig.TRACE_CLOUD_PAYLOAD_TAGGING_MAX_TAGS, 758); + this.dependecyResolutionPeriodMillis = + configProvider.getLong( + GeneralConfig.TELEMETRY_DEPENDENCY_RESOLUTION_PERIOD_MILLIS, + 1000); // 1 second by default + timelineEventsEnabled = configProvider.getBoolean( ProfilingConfig.PROFILING_TIMELINE_EVENTS_ENABLED, @@ -2061,6 +2088,10 @@ public Set getSplitByTags() { return splitByTags; } + public boolean isJeeSplitByDeployment() { + return jeeSplitByDeployment; + } + public int getScopeDepthLimit() { return scopeDepthLimit; } @@ -2077,6 +2108,14 @@ public int getPartialFlushMinSpans() { return partialFlushMinSpans; } + public int getTraceKeepLatencyThreshold() { + return traceKeepLatencyThreshold; + } + + public boolean isTraceKeepLatencyThresholdEnabled() { + return traceKeepLatencyThresholdEnabled; + } + public boolean isTraceStrictWritesEnabled() { return traceStrictWritesEnabled; } @@ -3032,6 +3071,10 @@ public boolean isSqsPropagationEnabled() { return sqsPropagationEnabled; } + public boolean isSqsBodyPropagationEnabled() { + return sqsBodyPropagationEnabled; + } + public boolean isKafkaClientPropagationEnabled() { return kafkaClientPropagationEnabled; } @@ -3664,6 +3707,14 @@ public boolean isEnabled( Collections.singletonList(settingName), "", settingSuffix, defaultEnabled); } + public long getDependecyResolutionPeriodMillis() { + return dependecyResolutionPeriodMillis; + } + + public boolean isDBMTracePreparedStatements() { + return DBMTracePreparedStatements; + } + public String getDBMPropagationMode() { return DBMPropagationMode; } @@ -4156,6 +4207,8 @@ public String toString() { + DBMPropagationMode + ", splitByTags=" + splitByTags + + ", jeeSplitByDeployment=" + + jeeSplitByDeployment + ", scopeDepthLimit=" + scopeDepthLimit + ", scopeStrictMode=" @@ -4164,6 +4217,10 @@ public String toString() { + scopeIterationKeepAlive + ", partialFlushMinSpans=" + partialFlushMinSpans + + ", traceKeepLatencyThresholdEnabled=" + + traceKeepLatencyThresholdEnabled + + ", traceKeepLatencyThreshold=" + + traceKeepLatencyThreshold + ", traceStrictWritesEnabled=" + traceStrictWritesEnabled + ", tracePropagationStylesToExtract=" diff --git a/internal-api/src/main/java/datadog/trace/api/civisibility/CIConstants.java b/internal-api/src/main/java/datadog/trace/api/civisibility/CIConstants.java index bc5e89eb5e5..6c7ef93544f 100644 --- a/internal-api/src/main/java/datadog/trace/api/civisibility/CIConstants.java +++ b/internal-api/src/main/java/datadog/trace/api/civisibility/CIConstants.java @@ -12,4 +12,6 @@ public interface CIConstants { String CI_VISIBILITY_INSTRUMENTATION_NAME = "civisibility"; String FAIL_FAST_TEST_ORDER = "FAILFAST"; + + String CIAPP_TEST_ORIGIN = "ciapp-test"; } diff --git a/internal-api/src/main/java/datadog/trace/api/iast/propagation/StringModule.java b/internal-api/src/main/java/datadog/trace/api/iast/propagation/StringModule.java index 23bcdd860a5..d449f1a8425 100644 --- a/internal-api/src/main/java/datadog/trace/api/iast/propagation/StringModule.java +++ b/internal-api/src/main/java/datadog/trace/api/iast/propagation/StringModule.java @@ -13,6 +13,9 @@ public interface StringModule extends IastModule { void onStringBuilderAppend(@Nonnull CharSequence builder, @Nullable CharSequence param); + void onStringBuilderAppend( + @Nonnull CharSequence builder, @Nullable CharSequence param, int start, int end); + void onStringBuilderToString(@Nonnull CharSequence builder, @Nonnull String result); void onStringConcatFactory( diff --git a/internal-api/src/main/java/datadog/trace/api/iast/util/PropagationUtils.java b/internal-api/src/main/java/datadog/trace/api/iast/util/PropagationUtils.java index 6049a6b4339..12d8eb195df 100644 --- a/internal-api/src/main/java/datadog/trace/api/iast/util/PropagationUtils.java +++ b/internal-api/src/main/java/datadog/trace/api/iast/util/PropagationUtils.java @@ -2,6 +2,7 @@ import datadog.trace.api.iast.InstrumentationBridge; import datadog.trace.api.iast.propagation.CodecModule; +import datadog.trace.api.iast.propagation.PropagationModule; import datadog.trace.api.iast.propagation.StringModule; import java.net.URI; @@ -44,4 +45,15 @@ public static StringBuilder onStringBuilderAppend(final String path, final Strin } return sb; } + + public static void taintObjectIfTainted(final Object target, final Object input) { + final PropagationModule module = InstrumentationBridge.PROPAGATION; + if (module != null) { + try { + module.taintObjectIfTainted(target, input); + } catch (final Throwable e) { + module.onUnexpectedException("taintObjectIfTainted threw", e); + } + } + } } diff --git a/internal-api/src/main/java/datadog/trace/api/naming/ClassloaderServiceNames.java b/internal-api/src/main/java/datadog/trace/api/naming/ClassloaderServiceNames.java new file mode 100644 index 00000000000..c9d73f7df1d --- /dev/null +++ b/internal-api/src/main/java/datadog/trace/api/naming/ClassloaderServiceNames.java @@ -0,0 +1,76 @@ +package datadog.trace.api.naming; + +import datadog.trace.api.Config; +import datadog.trace.api.config.GeneralConfig; +import datadog.trace.api.env.CapturedEnvironment; +import datadog.trace.api.remoteconfig.ServiceNameCollector; +import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import java.util.WeakHashMap; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class ClassloaderServiceNames { + private static final boolean ENABLED = + Config.get().isJeeSplitByDeployment() && !Config.get().isServiceNameSetByUser(); + + private static class Lazy { + private static final ClassloaderServiceNames INSTANCE = new ClassloaderServiceNames(); + } + + private final WeakHashMap weakCache = new WeakHashMap<>(); + private final String inferredServiceName = + CapturedEnvironment.get().getProperties().get(GeneralConfig.SERVICE_NAME); + + private ClassloaderServiceNames() {} + + public static void addServiceName(@Nonnull ClassLoader classLoader, @Nonnull String serviceName) { + if (ENABLED) { + Lazy.INSTANCE.weakCache.put(classLoader, serviceName); + } + } + + @Nullable + public static String maybeGet(@Nonnull ClassLoader classLoader) { + if (ENABLED) { + return Lazy.INSTANCE.weakCache.get(classLoader); + } + return null; + } + + /** + * Fetches the service name linked to the current thread's context classloader. + * + * @return a nullable service name. + */ + @Nullable + public static String maybeGetForCurrentThread() { + return maybeGet(Thread.currentThread().getContextClassLoader()); + } + + /** + * Sets the service name to the provided spans according to the service name linked to the current + * thread's classloader. + * + * @param span a nonnull span + */ + public static void maybeSetToSpan(@Nonnull final AgentSpan span) { + maybeSetToSpan(span, Thread.currentThread().getContextClassLoader()); + } + + public static void maybeSetToSpan( + @Nonnull final AgentSpan span, @Nonnull final ClassLoader classLoader) { + if (!ENABLED) { + return; + } + final String currentServiceName = span.getServiceName(); + if (currentServiceName != null + && !currentServiceName.equals(Lazy.INSTANCE.inferredServiceName)) { + return; + } + final String service = maybeGet(classLoader); + if (service != null) { + span.setServiceName(service); + ServiceNameCollector.get().addService(service); + } + } +} diff --git a/internal-api/src/main/java/datadog/trace/api/naming/v0/MessagingNamingV0.java b/internal-api/src/main/java/datadog/trace/api/naming/v0/MessagingNamingV0.java index fe4b3bef3c3..89be91e3d7e 100644 --- a/internal-api/src/main/java/datadog/trace/api/naming/v0/MessagingNamingV0.java +++ b/internal-api/src/main/java/datadog/trace/api/naming/v0/MessagingNamingV0.java @@ -1,6 +1,7 @@ package datadog.trace.api.naming.v0; import datadog.trace.api.Config; +import datadog.trace.api.naming.ClassloaderServiceNames; import datadog.trace.api.naming.NamingSchema; import datadog.trace.api.remoteconfig.ServiceNameCollector; import javax.annotation.Nonnull; @@ -46,6 +47,11 @@ public String inboundService(@Nonnull final String messagingSystem, boolean useL ServiceNameCollector.get().addService(messagingSystem); return messagingSystem; } else { + final String contextual = ClassloaderServiceNames.maybeGetForCurrentThread(); + if (contextual != null) { + ServiceNameCollector.get().addService(contextual); + return contextual; + } return Config.get().getServiceName(); } } else { diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InstrumentationTags.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InstrumentationTags.java index f21559fcbf4..ff94ab022d7 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InstrumentationTags.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InstrumentationTags.java @@ -107,6 +107,7 @@ public class InstrumentationTags { public static final String TWILIO_STATUS = "twilio.status"; public static final String TWILIO_PARENT_SID = "twilio.parentSid"; public static final String DBM_TRACE_INJECTED = "_dd.dbm_trace_injected"; + public static final String INSTRUMENTATION_TIME_MS = "_dd.instrumentation.time_ms"; public static final UTF8BytesString DD_MEASURED = UTF8BytesString.create("_dd.measured"); public static final UTF8BytesString DD_TOP_LEVEL = UTF8BytesString.create("_dd.top_level"); public static final UTF8BytesString DD_PARTIAL_VERSION = diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java index 9b3cde847fb..324e4d99a8d 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java @@ -34,13 +34,14 @@ public class TagContext implements AgentSpan.Context.Extracted { private final int samplingPriority; private final TraceConfig traceConfig; private final TracePropagationStyle propagationStyle; + private final DDTraceId traceId; public TagContext() { this(null, null); } - public TagContext(final String origin, final Map tags) { - this(origin, tags, null, null, PrioritySampling.UNSET, null, NONE); + public TagContext(final CharSequence origin, final Map tags) { + this(origin, tags, null, null, PrioritySampling.UNSET, null, NONE, DDTraceId.ZERO); } public TagContext( @@ -50,7 +51,8 @@ public TagContext( final Map baggage, final int samplingPriority, final TraceConfig traceConfig, - final TracePropagationStyle propagationStyle) { + final TracePropagationStyle propagationStyle, + final DDTraceId traceId) { this.origin = origin; this.tags = tags; this.terminatedContextLinks = null; @@ -59,6 +61,7 @@ public TagContext( this.samplingPriority = samplingPriority; this.traceConfig = traceConfig; this.propagationStyle = propagationStyle; + this.traceId = traceId; } public TraceConfig getTraceConfig() { @@ -187,7 +190,7 @@ public Iterable> baggageItems() { @Override public DDTraceId getTraceId() { - return DDTraceId.ZERO; + return traceId; } @Override diff --git a/internal-api/src/test/groovy/datadog/trace/api/iast/util/PropagationUtilsTest.groovy b/internal-api/src/test/groovy/datadog/trace/api/iast/util/PropagationUtilsTest.groovy index d379283aa01..f180f946db8 100644 --- a/internal-api/src/test/groovy/datadog/trace/api/iast/util/PropagationUtilsTest.groovy +++ b/internal-api/src/test/groovy/datadog/trace/api/iast/util/PropagationUtilsTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.api.iast.util import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule +import datadog.trace.api.iast.propagation.PropagationModule import datadog.trace.api.iast.propagation.StringModule import datadog.trace.test.util.DDSpecification @@ -106,6 +107,23 @@ class PropagationUtilsTest extends DDSpecification { value << ['http://test.com'] } + void 'test taintObjectIfTainted'() { + setup: + final iastModule = Mock(PropagationModule) + InstrumentationBridge.registerIastModule(iastModule) + String inputTest = "test" + + when: + PropagationUtils.taintObjectIfTainted(value, inputTest) + + then: + 1 * iastModule.taintObjectIfTainted(value, inputTest) + 0 * _ + + where: + value << ['http://test.com'] + } + void 'test onUriCreate throw exception'() { setup: final iastModule = Mock(CodecModule) @@ -162,4 +180,22 @@ class PropagationUtilsTest extends DDSpecification { where: value << ['http://test.com'] } + + void 'test taintObjectIfTainted throw exception'() { + setup: + final iastModule = Mock(PropagationModule) + InstrumentationBridge.registerIastModule(iastModule) + String inputTest = "test" + + when: + PropagationUtils.taintObjectIfTainted(value, inputTest) + + then: + 1 * iastModule.taintObjectIfTainted(value, inputTest) >> { throw new Exception("test exception") } + 1 * iastModule.onUnexpectedException("taintObjectIfTainted threw", _ as Exception) + 0 * _ + + where: + value << ['http://test.com'] + } } diff --git a/settings.gradle b/settings.gradle index 0422e36fce6..2d78784b023 100644 --- a/settings.gradle +++ b/settings.gradle @@ -185,6 +185,7 @@ include ':dd-java-agent:instrumentation:apache-httpasyncclient-4' include ':dd-java-agent:instrumentation:apache-httpclient-4' include ':dd-java-agent:instrumentation:apache-httpclient-5' include ':dd-java-agent:instrumentation:apache-httpcore-4' +include ':dd-java-agent:instrumentation:apache-httpcore-5' include ':dd-java-agent:instrumentation:armeria-grpc' include ':dd-java-agent:instrumentation:armeria-jetty' include ':dd-java-agent:instrumentation:avro' @@ -343,9 +344,10 @@ include ':dd-java-agent:instrumentation:junit-5.3' include ':dd-java-agent:instrumentation:junit-5.3:junit-5.8' include ':dd-java-agent:instrumentation:junit-5.3:cucumber-junit-5' include ':dd-java-agent:instrumentation:junit-5.3:spock-junit-5' -include ':dd-java-agent:instrumentation:kafka-common' include ':dd-java-agent:instrumentation:kafka-clients-0.11' -include 'dd-java-agent:instrumentation:kafka-clients-3.8' +include ':dd-java-agent:instrumentation:kafka-clients-3.8' +include ':dd-java-agent:instrumentation:kafka-common' +include ':dd-java-agent:instrumentation:kafka-connect-0.11' include ':dd-java-agent:instrumentation:kafka-streams-0.11' include ':dd-java-agent:instrumentation:kafka-streams-1.0' include ':dd-java-agent:instrumentation:karate' @@ -479,6 +481,7 @@ include ':dd-java-agent:instrumentation:tomcat-5.5-common' include ':dd-java-agent:instrumentation:tomcat-appsec-5.5' include ':dd-java-agent:instrumentation:tomcat-appsec-6' include ':dd-java-agent:instrumentation:tomcat-appsec-7' +include ':dd-java-agent:instrumentation:tomcat-classloading-9' include ':dd-java-agent:instrumentation:trace-annotation' include ':dd-java-agent:instrumentation:twilio' include ':dd-java-agent:instrumentation:unbescape' diff --git a/telemetry/src/main/java/datadog/telemetry/dependency/DependencyService.java b/telemetry/src/main/java/datadog/telemetry/dependency/DependencyService.java index ba0531d062d..f561e9bb163 100644 --- a/telemetry/src/main/java/datadog/telemetry/dependency/DependencyService.java +++ b/telemetry/src/main/java/datadog/telemetry/dependency/DependencyService.java @@ -1,5 +1,6 @@ package datadog.telemetry.dependency; +import datadog.trace.api.Config; import datadog.trace.util.AgentTaskScheduler; import java.lang.instrument.Instrumentation; import java.net.URI; @@ -31,7 +32,11 @@ public class DependencyService implements Runnable { public void schedulePeriodicResolution() { scheduledTask = AgentTaskScheduler.INSTANCE.scheduleAtFixedRate( - AgentTaskScheduler.RunnableTask.INSTANCE, this, 0, 1000L, TimeUnit.MILLISECONDS); + AgentTaskScheduler.RunnableTask.INSTANCE, + this, + 0, + Config.get().getDependecyResolutionPeriodMillis(), + TimeUnit.MILLISECONDS); } public void resolveOneDependency() {